Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: dinis124
Дата сообщения: 29.04.2014 20:26
Рябят ,подскажите как обратно собрать NeoPaint 5 (Inno Setup 5.5.0(a))
http://www.neosoftware.com/npw.html
• Разобрал установщик NeoPaint 5 в InnoExtractor 4.4.0.909
• открыл install_script.iss в Inno Setup
• запустил компиляцию
• выдало ошибку ошибка Стр. 210:
Required function or procedure 'GetDataDir' not found.

В параметре [Registry] На строке Root: HKCU; Subkey: "Software\NeoSoft\NeoPaint 5"; ValueName: "StampPadDir"; ValueType: String; ValueData: "{code:GetDataDir}\Stamps\Leaves"; MinVersion: 0.0,5.01.2600; Flags: uninsdeletekey
• Что нужно чтобы обратно собрать?
Потом планирую вставить файл русификации NeoPaint.RUS + пак кистей, но сначала хочу научиться собирать NeoPaint обратно

Оригинальный сктрипт без правки: Так как длинный убрал под #]
Автор: AkroMen
Дата сообщения: 29.04.2014 21:07
[more] Кто может сказать в чем проблема,выбиваешь ошибку при компиляции Unknown type 'TltenArea'
Версияinno 5.5.4(а)

Код: [Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Components]
Name: Gruppa\1; Description: Изображение 1; Flags: disablenouninstallwarning exclusive
Name: Gruppa\2; Description: Изображение 2; Flags: disablenouninstallwarning exclusive

[Files]
Source: InstallFiles\1.bmp; Flags: dontcopy nocompression
Source: InstallFiles\2.bmp; Flags: dontcopy nocompression

[Сode]
const
UNDEF_INDEX = -777;


function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';


var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;


procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
InfoPic.SetBounds(ScaleX(245), ScaleY(42), ScaleX(166), ScaleY(165));
InfoPic.Show;
end;


procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Изображение 1': UndefPic := '1.bmp';
'Изображение 2': UndefPic := '2.bmp';
else
begin
LastIndex := UNDEF_INDEX;
InfoPic.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;


procedure CompOnMouseLeave(Sender: TObject);
begin
InfoPic.Hide;
LastIndex := -1;
end;


procedure InitInfo();
begin
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(37), ScaleX(225), ScaleY(176));
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;

with TBevel.Create(WizardForm) do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(240), ScaleY(37), ScaleX(177), ScaleY(176));
Shape := bsFrame;
end;

InfoPic := TBitmapImage.Create(WizardForm)
with InfoPic do
begin
Parent := WizardForm.SelectComponentsPage;
AutoSize := True;
end;
end;


procedure InitializeWizard();
begin
InitInfo();
end;
Автор: sergey3695
Дата сообщения: 29.04.2014 21:11
dragon1000
[more=Вот..ISSkin.iss]
Код: [Files]
Source: ISSkin/ISSkin.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISSkin/ISSkin.cjstyles; DestDir: {tmp}; Flags: dontcopy


Код:
procedure LoadSkin(lpszPath: string; lpszIniFileName: string );
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';
procedure SetThemeAppProperties(dwFlags: DWORD);
external 'SetThemeAppProperties@uxtheme.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('ISSkin.cjstyles');
SetThemeAppProperties(0);
LoadSkin(ExpandConstant('{tmp}\ISSkin.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
Sleep(300);
UnloadSkin();
end;
Автор: AkroMen
Дата сообщения: 29.04.2014 21:50
sergey3695
5.5.4(u) (build 120808) Тоже не хочет
Запускал на ultro там все работает,но тогда выходит другая проблема компилируется без скина

Добавлено:
sergey3695
Пришлось ставить как у тебя версию чтобы все заработало,спасибо

Добавлено:
AkroMen

Правда теперь другая проблема.компиляция прошла успешно,но не показывает изображение при наведении на выбранный компонент.В чем может быть проблема? в том что стоит 5.5.1(a) ?
Автор: Robby
Дата сообщения: 29.04.2014 22:51
dinis124
Анпакер не может восстановить секцию кода на паскале из установщика, а там есть функция 'GetDataDir', результат которой используется здесь

Код: Root: HKCU; Subkey: "Software\NeoSoft\NeoPaint 5"; ValueName: "StampPadDir"; ValueType: String; ValueData: "{code:GetDataDir}\Stamps\Leaves"; MinVersion: 0.0,5.01.2600; Flags: uninsdeletekey
Автор: sergey3695
Дата сообщения: 30.04.2014 06:10
AkroMen поставил также сборочку ansi, все работает. ( Оф. сайт )
Автор: dragon1000
Дата сообщения: 30.04.2014 06:32

Цитата:
sergey3695


СПС!
Автор: AkroMen
Дата сообщения: 30.04.2014 14:07
sergey3695
Я ведь сказал что поставил такую же
http://s019.radikal.ru/i631/1404/9f/4e5cd90c8fac.png

Добавлено:
sergey3695
Курсор на компоненте но картинки нет
Автор: sergey3695
Дата сообщения: 30.04.2014 17:06
AkroMen
http://fastpic.ru/view/56/2014/0430/61638f2d59a9e147c0392fd2991fd75b.jpg.html
я ведь проверил прежде чем написать. скрипт как понял с oszone брал.
Автор: AkroMen
Дата сообщения: 30.04.2014 17:30
sergey3695
Бред честно какой-то.Переписал скрипт и все появилось
Спасибо большой еще раз


Добавлено:
sergey3695
Помоги еще раз,если код компилировать отдельно все работает но,если я его вставляю в основной то картинку почему-то не показывает, ошибок при компиляции нет.
В чем проблема ума не приложу
Ссылку дам на iss,а то тут выходит код в иероглифах
http://yadi.sk/d/jT48SS1xNkQ7F
Автор: dinis124
Дата сообщения: 30.04.2014 19:39
Robby
Спасибо за совет и отзывчивость. Вопрос решен.
Автор: sergey3695
Дата сообщения: 30.04.2014 21:49
AkroMen

Код: 'Png 1': UndefPic := '1.bmp';
'Png 2': UndefPic := '2.bmp';
Автор: Turisto
Дата сообщения: 30.04.2014 22:00
Подскажите, Inno Setup позволяет извлечь из дистрибутива скрипт собственными силами?
Автор: AkroMen
Дата сообщения: 01.05.2014 09:44
sergey3695
Проблема была совсем в другом.
В строках:
[Components]
Name: Gruppa; Description: Доп файлы; Flags:exclusive
Name: Gruppa\1; Description:Тест;Types: viborochnaya;Flags: disablenouninstallwarning exclusive
Name: Gruppa\2; Description:Текст;Types: viborochnaya;Flags: disablenouninstallwarning exclusive
И
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Тест': UndefPic := '1.bmp';
'Текст': UndefPic := '2.bmp';
else
Должна быть полная симметрия,то есть что написано в gruppa\1 в description то должно быть и в ' ':UndefPic
И еще к тому же текст не должен повторятся иначе к двум разным компонентам будет одно и тоже изображение.Вроде бы понятно объяснил
Автор: sergey3695
Дата сообщения: 01.05.2014 11:45
AkroMen главное что сам допер,красава (проблема было в этом,я почему сказал точки убрать...это мне было печатать влом чтобы объяснять, как говорится когда сам додумаешься гораздо лучше)
Автор: AkroMen
Дата сообщения: 01.05.2014 12:48
sergey3695
Спасибо еще раз)
Автор: AtotIK
Дата сообщения: 02.05.2014 12:32
Подскажите пожалуйста, есть ли специализированные скрипты для редактирования JSON-конфигов?
Автор: AkroMen
Дата сообщения: 02.05.2014 13:40
Можно как-то поменять размер инсталлятора и окон?

Код: procedure InitializeWizard();
begin
WizardForm.Width:=640;
WizardForm.Height:=480;
end;
Автор: SLasH
Дата сообщения: 02.05.2014 22:52
Приветствую всех!
Может кто-нибудь подсказать, как распаковать сборки типа этой?
Пароль на архив стандартный.
Автор: innonewbie
Дата сообщения: 03.05.2014 09:03
AkroMen, насколько мне известно нужно переписывать позиции всех элементов страниц (перемещать стандартные,либо скрывать стандартные и делать кастомные). Вот, сделал [more=набросок]
[Code]
var
X,Y: Integer;

procedure InitializeWizard();
begin
with WizardForm do begin
X:=ScaleX(143); // На сколько надо увеличить длину инсталла
Y:=ScaleX(143); // На сколько надо увеличить высоту инсталла
Position := poScreenCenter;
Width:= WizardForm.Width + X;
Height:= WizardForm.Height + Y;
Bevel.Width:= WizardForm.Width;
Bevel1.Width:= WizardForm.Width;
//Bevel1.top:= WizardForm.Bevel1.top + Y;
Bevel.top:= WizardForm.Bevel.top + Y;
OuterNotebook.Width := WizardForm.OuterNotebook.Width + X
OuterNotebook.Height := WizardForm.OuterNotebook.Height + Y
InnerNotebook.Width := WizardForm.InnerNotebook.Width + X
InnerNotebook.Height := WizardForm.InnerNotebook.Height + Y

with WelcomeLabel1 do
begin
Width:= WizardForm.WelcomeLabel1.Width + X;
end;

with WelcomeLabel2 do
begin
Width:= WizardForm.WelcomeLabel2.Width + X;
Height := WizardForm.WelcomeLabel2.Height + Y;
end;

with CancelButton do
begin
Left := WizardForm.CancelButton.left + X;
Top := WizardForm.CancelButton.top + Y;;
end;

with NextButton do
begin
Left := WizardForm.NextButton.left + X;
Top := WizardForm.NextButton.Top + Y;
end;

with backButton do
begin
Left := WizardForm.backButton.left + X;
Top := WizardForm.backButton.Top + Y;
end;

with WizardBitmapImage do
begin
Height := WizardForm.WizardBitmapImage.Height + Y;
end;

with MainPanel do
begin
Width:= WizardForm.MainPanel.Width + X;
end;
end;
end;[/more] как пример: переместил элементы страницы приветствия - остальное по-аналогии.
Автор: AkroMen
Дата сообщения: 03.05.2014 11:09
innonewbie
Спасибо большое
Автор: Shaman2
Дата сообщения: 03.05.2014 12:11
а есть на сегодня какие-то плагины для фара или тотала, которые способны распаковать инсталл?

И еще вопрос: установлена программа, вручную как правило. Т.е. записей инно инсталлера нету. Апдейты ее автоматизированы, в параметрах указано:

Uninstallable=no
DirExistsWarning=no


в коде


Код:
function NextButtonClick(CurPageID: Integer): Boolean;
var
s: string;
begin
Result := True;
if CurPageID=wpSelectDir then begin
if (FileSearch('realization.exe', ExpandConstant('{app}\'))='') then begin
s:='Извините, но в директории '+ExpandConstant('{app}\')+ #13 +'не обнаружены файлы программы.'+ #13#13 +'Пожалуйста, выберите правильный путь.';
MsgBox(s, mbError, mb_Ok);
Result:= False;
end;
end;
end;
Автор: neznayka3
Дата сообщения: 04.05.2014 11:08

Код: [Run]
Filename: "{tmp}\postgresql-9.3.4-3-windows.exe"; Parameters: "--mode unattended --superpassword postgres"
Filename: "{pf32}\PostgreSQL\9.3\bin\psql.exe"; Parameters: "-U postgres -1 -f {app}\backup\init.sql"
Автор: AkroMen
Дата сообщения: 04.05.2014 15:03
Delete
Автор: Habib2302
Дата сообщения: 04.05.2014 16:55
я дорабатываю свой репак adobe flash player. и как сделать так, чтобы во время установки первый прогресс бар показывал состояние распаковки файлов, а второй показывал состояние установки самого adobAe fl pl

и как добавить украинский язык в этот скрипт
Ссылка
Автор: AkroMen
Дата сообщения: 04.05.2014 23:19
[more] Как-то так
[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
ShowLanguageDialog=auto

[Languages]
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "ukr"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[CustomMessages]
; Русский
rusButtonBack=< &Назад
rusButtonNext=&Далее >
rusButtonCancel=Отмена
rusSetupWindowTitle=Установка — %1
rusWelcomeLabel1=Вас приветствует Мастер установки %1
rusWelcomeLabel2=Программа установит %1, версия %2 на Ваш компьютер.%n%nРекомендуется закрыть все прочие приложения перед тем, как продолжить.%n%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки.

; English
engButtonBack=< &Back
engButtonNext=&Next >
engButtonCancel=Cancel
engSetupWindowTitle=Setup — %1
engWelcomeLabel1=Welcome to the %1 Setup Wizard
engWelcomeLabel2=This will install %1 version %2 on your computer.%n%nIt is recommended that you close all other applications before continuing.%n%nClick Next to continue, or Cancel to exit Setup.



; Ukrainian
ukrButtonBack=< &Назад
ukrButtonNext=&Далi >
ukrButtonCancel=Cкасування
ukrSetupWindowTitle=Встановити — %1
ukrWelcomeLabel1=Вас вітає Майстер установки %1
ukrWelcomeLabel2=Програма встановить %1, версія %2 на Ваш комп'ютер.%n%nРекомендуємо закрити всі інші програми перед тим, як продовжити.%n%nНатисніть «Далі», щоб продовжити, або «Скасувати», щоб вийти з програми установки.


[Code]
var
lang: String;
langBtn: TButton;

procedure ChangeLang();
begin
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.NextButton.Caption:= CustomMessage(lang+'ButtonNext');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.Caption:= FmtMessage(CustomMessage(lang+'SetupWindowTitle'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel1.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel1'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel2.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel2'), ['{#SetupSetting('AppName')}', '{#SetupSetting('AppVersion')}']);
end;

procedure LangBtnClick(Sender: TObject);
begin
if lang='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'eng';
end else begin
lang:= 'rus';
langBtn.Caption:= 'rus';

lang:= 'ukr';
langBtn.Caption:= 'ukr';

end;
ChangeLang();
end;


procedure InitializeWizard;
begin
langBtn:= TButton.Create(WizardForm);
with langBtn do begin
SetBounds(10,WizardForm.CancelButton.Top,30,WizardForm.CancelButton.Height)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;

if ActiveLanguage='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'eng';

lang:= 'rus';
langBtn.Caption:= 'rus';
end else begin
lang:= 'ukr';
langBtn.Caption:= 'ukr';

end;
end; [/more]
Автор: Habib2302
Дата сообщения: 04.05.2014 23:41
AkroMen
спасибо за 2 вопрос
Автор: Skif_off
Дата сообщения: 05.05.2014 00:09
comrades, доступен ли исходный код Inno Setup Compiler от ResTools?
Автор: rautly
Дата сообщения: 05.05.2014 00:49
Подскажите как сделать чтобы чекбокс, в окне выбора параметров, нельзя было снять? Нужно чтобы он отображался, для информации, но изменять его нельзя.
Автор: AkroMen
Дата сообщения: 05.05.2014 10:10
rautly
Если правильно понял то так:Flags: fixed

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

Предыдущая тема: Только инсталлятор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.