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

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

Автор: sjwrec
Дата сообщения: 17.09.2014 17:29
dragon1000

А, дело вот в чём. Ну да антивиры типа Авира и Нода-подобные действительно боятся кода расширенной версии и пишут подобие на вирус. Я называю такие антивиры Параноиками и никогда их не ставлю.

Антивирусы, Аваст (у меня сейчас) и Касперский свободно реагируют на сетап - считая его чистым.
Многие антивиры блокируют даже Дельфи программки.
Автор: dragon1000
Дата сообщения: 17.09.2014 17:37
sjwrec, у меня тоже касперский молчит. Но мне то эти вещи понятны а вот как все объясните тем кто скачивает репаки.

Вот что меня еще пока останавливает на расширенной версии это проблема с выводом .rtf -ок на стандарте.

Почему то выводится нормально текст с форматированием только в стандартных окнах инсталлятора, а при выводе текста на кастомной форме он выводится как обычная txt-ка. Проблему давно не могу решить блин.

Неужели нет другого способа вывода текста с нормальным форматированием кроме как использовать расширенную версию?

Скрипт: http://rghost.ru/58074681 [more=Скрин: Стандартная версия компилятора] [/more]
Автор: sjwrec
Дата сообщения: 18.09.2014 11:35
dragon1000

Вот немного переделал: http://rghost.ru/58076716
Похоже что глюк с неправильным отображением связан с Unicode версией компиллятора. Попробуйте скомпиллировать на ANSI версии.
Автор: dragon1000
Дата сообщения: 18.09.2014 11:44
Так я использую ANSI версию, юникодной не пользовался никогда.

Все так же осталось с переделкой из вашего сообщения.
Автор: sjwrec
Дата сообщения: 18.09.2014 12:01
dragon1000

Ну Вы использовали AnsiString - а это обычно на Юникоде используется. Поэтому так и подумал.
Ну теперь мне всё ясно, значит только в расширенной будет нормально отображаться.
Автор: dragon1000
Дата сообщения: 18.09.2014 12:15
sjwrec, эх жалко ну в общем спасибо вам.

Лучше бы китайцы не модифицировали основные файлы компилятора, а как нибудь засовывали новые функции в dll-ки для совместимости с новыми версиями Inno Setup-а, да и удобнее для всех бы такой вариант был.
Автор: sjwrec
Дата сообщения: 18.09.2014 17:32
dragon1000

Можно по идее в Дельфи библиотеку написать, которая будет правильно отображать RTF - но я в нём пока ещё очень плохо программирую.

Насчёт расширенной версии, тоже верно. Они модифицировали ядро компиллятора, из-за чего слетела электронная подпись и изменилась хеш сумма, естественно что любой параноидальный антивирусник тут же начнёт обзывать скомпиллированный на этом ядре инсталл вирусом или подобием на вирус.
Автор: Sedjyan
Дата сообщения: 21.09.2014 13:53
Уважаемые форумчане!
У меня такая просьба к вам. Если у кого то есть, прошу поделиться inno setup с поддержкой alphaskins.
Ни где не могу найти, а выложенная здесь ранее ссылка померла.
Автор: AlekseyPopovv
Дата сообщения: 21.09.2014 20:56
Как сделать что бы при нажатии кнопки "Да" продолжилась установка, а при нажатии кнопки "Нет" установка отменилась и перешла не предыдущую страницу инсталлятора?

procedure CurStepChanged(CurStep: TSetupStep);
begin
if (CurStep = ssInstall) then
MsgBox('Продолжить установку?', mbinformation, mb_yesno);
end;
Автор: MC775
Дата сообщения: 21.09.2014 20:59
Доброго всем вечера. Есть одна проблема, при установки игры если пользователь хочет отменить установку при этом нажав на кнопку Отмены то сама копка исчезает и установка продолжается, единственный выход это принудительно через Дисп. задач закрыть процесс. Я пытался изменить строки с "procedure DeinitializeSetup" но ничего не вышло.

Если кто-то сможет взгляните пожалуйста - http://rghost.ru/58136321
Напоминаю что кнопка не действует во время установки!

Заранее спасибо!
Автор: Tobyas Ripper
Дата сообщения: 22.09.2014 19:32
Уважаемые форумчане!
Возник вопрос, ответа не нашел нигде.
Хочу чтобы заместо обыденных
setup1a.bin
setup1b.bin
можно было бы вставить свои расширения, т.е. заместо BIN, например
setup1a.tobyasripper
setup1b.tobyasripper
Видел такое в репаке от каталистов.
Понравилось, есть возможность реализовать такую фичу?
Буду благодарен любым советам.
Автор: Sedjyan
Дата сообщения: 23.09.2014 07:13
Конечно можно. Только прикол в том что с другим расширением в репаках поставлены не файлы созданные inno setup, а архивы созданные в архиваторах. Например упакована игра с помощью freearc а в инсталл включен isdone, а ему пофиг из файла какого расширения распаковывать игру, главное ему указать этот файл.
Автор: dixen18
Дата сообщения: 23.09.2014 12:07
Tobyas Ripper

Если архивы созданы во FreeArc - Надо в файле ISDone.iss найти такую строчку

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}\'), '', false, '5923-AC-2826', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;

и вместо bin поставить другое угодное вам расширение..Ну и само собой такое расширение должны иметь ваши архивы
Автор: Tobyas Ripper
Дата сообщения: 23.09.2014 15:29
dixen18
Не поможете в прописи кода?
При сопряжении с файлом FreeArc_Example-Ext.iss
Кляпит ошибку.

Автор: SotM
Дата сообщения: 23.09.2014 19:10
Tobyas Ripper
Для начала убери картинку под кат. В правилах ведь написано!
Автор: MihailM
Дата сообщения: 24.09.2014 13:51
Помогите прикрутить вот этот кусочек кода http://forum.ru-board.com/topic.cgi?forum=5&topic=30413&start=2562&limit=1&m=10#1

А то попробовал простенький скрипт [more=стандартный ..]
; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppId={{8D9010AB-3813-4801-A57D-5A395F423AC1}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=T:\w7temp
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "t:\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;

if CurPageID = wpSelectDir then
begin
if IsComponentSelected('Game\Lokal') then
if (FileSearch('Install.exe', ExpandConstant('{app}')) = '') then
if (FileSearch('StarCraft.mpq', ExpandConstant('{app}')) = '') then
begin
SuppressibleMsgBox('Файл Install.exe не найден в папке назначения, скопируйте его с' #13 'лицензионного диска StarCraft, в папку, для начала инсталляции.', mbCriticalError, MB_OK, MB_OK);
Result := False;
end else
Result := True;
end;
end;[/more] . Так почему то ноль эмоций ..
А то надо сделать , чтоб установка происходила от выбора определенного файла/папки , только тогда чтобы была установка ..
2. Или прочитать определенную ветку и ключ реестра .
А то нашел вот этот [more=код ][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[INI]
Filename: {app}\Config.ini; Section: Settings; Key: MyValue; String: {code: RegValue|HKxx\SubkeyName,ValueName}

[Code]
function RegValue(Param: String): String;
begin
    Result:= ExpandConstant('{reg:'+ Param +'}')
end; [/more] , что-то не понял как он работает.

Автор: sjwrec
Дата сообщения: 24.09.2014 17:50
MihailM

Цитата:
Или прочитать определенную ветку и ключ реестра


У меня это сделано вот так:
[more]
[Setup]
DefaultDirName={code:AvPatch}
....

[Code]

// Начало Процедура "Определение местонахождения игры"
function AvPatch(Default: String): String;
var AvRes: String;
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 251570','InstallLocation', AvRes);
if AvRes = '' then RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 251570','InstallLocation', AvRes);
if AvRes = '' then Result:= 'C:\Games\7 Days To Die';
if AvRes <> '' then Result:= AvRes;
end;
// Конец Процедура "Определение местонахождения игры"
[/more]

Автор: Tobyas Ripper
Дата сообщения: 24.09.2014 18:21
Всем спасибо, прописать к моему скрипту скрипт распаковки фриарк с горем пополам удалось.
Возникли мелкие проблемки:
Две кнопки на инсталляторе:
1 (слева): Кнопка, от моего предыдущего скрипта, соответственно легко отключается.
2 (справа): Судя по всему встала там от ISdone.
Ни одна из кнопок не работает. Нажимается, но никаких должных действий не осуществляет.
Автор: MihailM
Дата сообщения: 24.09.2014 21:52
sjwrec, спасибо .. будем разбираться ..
p.s. отписал в ЛС .
Автор: RussaKKinG
Дата сообщения: 27.09.2014 00:21
Помогите мне сделать что бы в установщики путь сам указывался...
(Мне надо для игры WoT)

Вот пример пути но он не работает!

DefaultDirName={reg:HKLM\SOFTWARE\Wargaming.net\wot\Launcher\launch_count}
Автор: artemabu
Дата сообщения: 28.09.2014 09:50
http://i077.radikal.ru/1409/7e/961d1feb7383.png
Помогите такая хрень
Автор: MC775
Дата сообщения: 28.09.2014 11:01
Привет всем. Кто может сказать как из архива, при выборе инного компонента распаковать соответствующие файлы? Или хотя бы дайте справочку нормальную почитать, а у менч что-то .chm с шапки не открываются. Спасибо заранее!
Автор: Tobyas Ripper
Дата сообщения: 28.09.2014 16:13
artemabu
В графе var возможно не хватает строчки:
CallBack:longword;
в function
type
TCallback = function (Pct: integer;CurrentFile:string): longword;
function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';
Не исключаю отсутствия информации о файле:Source:
Include\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Автор: artemabu
Дата сообщения: 28.09.2014 16:23

Цитата:
В графе var возможно не хватает строчки:
 CallBack:longword;
в function
type
  TCallback = function (Pct: integer;CurrentFile:string): longword;
  function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';
Не исключаю отсутствия информации о файле:Source:  
Include\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy


все равно ошибку выдают напишите в скайп artemabu или в icq: 562 514 141

Добавлено:
http://s09.radikal.ru/i182/1409/54/3adf7b68f6a2.png
Автор: sjwrec
Дата сообщения: 28.09.2014 18:02
RussaKKinG

Цитата:
Помогите мне сделать что бы в установщики путь сам указывался... (Мне надо для игры WoT)   Вот пример пути но он не работает!   DefaultDirName={reg:HKLM\SOFTWARE\Wargaming.net\wot\Launcher\launch_count}


А не работает потому, что в системе x64 этот ключ будет выглядеть подругому
SOFTWARE\Wow6432Node\Wargaming.net\wot\Launcher\launch_count

Помотрите мой пост выше, я уже подобное для MihailM писал.

Автор: artemabu
Дата сообщения: 28.09.2014 18:07
sjwrec
помогите мне http://s09.radikal.ru/i182/1409/54/3adf7b68f6a2.png
Автор: artemabu
Дата сообщения: 29.09.2014 12:03
[more]
Код: #define MyAppName "The SIMS 4 Deluxe Edition"
#define MyAppVersion "1.5"
#define MyAppPublisher "саmоdelкiн"
#define NeedSize "10000000000"


;#define records

[Setup]
AppId={{8CC9C439-58E0-4745-BB8A-9210BAFAAE38}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=the sims 4
Compression=lzma
SolidCompression=yes
WizardImageFile=image/1.bmp
WizardSmallImageFile=image/2.bmp
SetupIconFile=icon.ico
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy
#endif

Source: Include\ISSkin.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\1.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: image\logo.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Include\CallbackCtrl.dll; DestDir: {tmp}; Flags: dontcopy
Source: "BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression
Source: "sound.mp3"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression

[CustomMessages]
rus.FinishedLabel=Программа {#MyAppName} установлена на Ваш компьютер. Приложение можно запустить с помощью соответствующего значка.%n%nНажмите «Завершить», чтобы выйти из программы установки.
rus.Error2=Установка %n{#MyAppName} %nне завершена.
rus.Error3=%nВо время установки произошла ошибка, пожалуйста отключите сторонние программы и повторите попытку установки.%n%n%nНажмите «Завершить», чтобы выйти.
rus.WelcomeLabel1=Программа установит игру {#MyAppName} на Ваш компьютер.
rus.WelcomeLabel2=Нажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти
rus.FinisLabel1=Игра %n{#MyAppName}%n установлена на Ваш%n компьютер.
rus.FinisLabel2=%n%nДля ее запуска выберите%n соотвествующий ярлык%n в меню "Пуск" или на Рабочем столе. %n%nНажмите «Завершить», %nчтобы выйти из программы установки.
rus.ExtractedFile=Распаковывается файл:
rus.CancelButton=Отменить распаковку
rus.Error=Ошибка распаковки!


[Code]
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';

var
PageNameLabel, PageDescriptionLabel, WelcomeLabel1,WelcomeLabel2,FLabel1, FLabel2, WLabel1, WLabel2, WelcomeLabel4,FinishedHeadingLabel, FinishedHeadingLabel1,WelcomeLabel3: TLabel;
LabelPct,LabelCurrFileName: TLabel;
ISDoneProgressBar: TNewProgressBar;
MyCancelButton: TButton;
OveralPct,Cancel:integer;
CallBack:longword;
MyError:boolean;
mp3Handle: HWND;
mp3Name: String;

const
BASS_SAMPLE_LOOP = 4;




function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PAnsiChar; offset1: DWORD; offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): DWORD; external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;

type
TMessage = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end;

TCallback = function (Pct: integer;CurrentFile:string): longword;

function PeekMessage(var lpMsg: TMessage; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMessage): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMessage): Longint; external 'DispatchMessageA@user32.dll stdcall';
function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';

function ISArcExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password, CfgFile, WorkPath: AnsiString):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall';
function IS7ZipExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password: AnsiString):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall';
function ISRarExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password: AnsiString):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall';
function ISPrecompExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean; callback: longword):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall';
function ISSRepExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile, IdxFile: AnsiString; DeleteInFile:boolean; callback: longword):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function StartRecord(RecordFileName:AnsiString; AllComponents:longword):BOOL; external 'StartRecord@files:ISDone.dll stdcall';
function CheckPoint(CurComponent:Integer):BOOL; external 'CheckPoint@files:ISDone.dll stdcall';
function StopRecord:BOOL; external 'StopRecord@files:ISDone.dll stdcall';

function ProgressCallback(Pct: integer; CurrentFile:AnsiString): longword;
var Msg: TMessage;
begin
if Pct<=ISDoneProgressBar.Max then
ISDoneProgressBar.Position := Pct;
LabelPct.Caption := IntToStr(Pct div 10)+'.'+chr(48 + Pct mod 10)+'%';
LabelCurrFileName.Caption :=ExpandConstant('{cm:ExtractedFile} ')+CurrentFile;
while PeekMessage(Msg, 0, 0, 0, 1) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Result := Cancel;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:=1;
end;
procedure progresbar();

begin
ISDoneProgressBar := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar do begin
Left := ScaleX(0);
Top := ScaleY(40);
Width := ScaleX(417);
Max := 1000;
Height := WizardForm.ProgressGauge.Height;
Parent := WizardForm.InstallingPage;
end;
LabelPct := TLabel.Create(WizardForm);
with LabelPct do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := WizardForm.ProgressGauge.Width;
Top := WizardForm.ProgressGauge.Top + ScaleY(40);
Alignment := taCenter;
Caption := '';
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := WizardForm.ProgressGauge.Width;
Left := ScaleX(0);
Top := WizardForm.ProgressGauge.Top + ScaleY(25);
Caption := '';
end;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpFinished) and MyError then
begin
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var CallBack, ChComp, TmpValue:longword;
n:integer;

begin
if CurStep = ssInstall then begin
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Visible:=false;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(135);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
CallBack:=WrapMyCallback(@ProgressCallback,2);
Cancel:=0;
OveralPct:=0;


#ifdef records

ExtractTemporaryFile('records.inf');
#endif



StartRecord(ExpandConstant('{src}\records.inf'),ChComp);
repeat
MyError:=true;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\1.arc'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;

MyError:=false;
until true;
StopRecord;

MyCancelButton.Visible:=false;
WizardForm.CancelButton.Visible:=true;
end;
if (CurStep=ssPostInstall) and MyError then
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);
end;


procedure WizardImage();
begin
WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);

WelcomeLabel1:= TLabel.Create(WizardForm);
WelcomeLabel1.Left := ScaleX(36);
WelcomeLabel1.Top := ScaleY(89);
WelcomeLabel1.Width := ScaleX(205);
WelcomeLabel1.Height := ScaleY(219);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Alignment := taCenter;
WelcomeLabel1.Font.Size := 12;
WelcomeLabel1.Font.Color:= clblack;
WelcomeLabel1.Font.Style:= [fsBold]
WelcomeLabel1.Font.Name:= 'Georgia'
WelcomeLabel1.ShowAccelChar := False;
WelcomeLabel1.Caption :=ExpandConstant('{cm:WelcomeLabel1}');
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm.WelcomePage;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(36);
WLabel1.Top := ScaleY(90);
WLabel1.Width := ScaleX(205);
WLabel1.Height := ScaleY(219);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Alignment := taCenter;
WLabel1.Font.Size := 12;
WLabel1.Font.Color:= clwhite;
WLabel1.Font.Style:= [fsBold]
WLabel1.Font.Name:= 'Georgia'
WLabel1.ShowAccelChar := False;
WLabel1.Caption :=ExpandConstant('{cm:WelcomeLabel1}');
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WelcomeLabel2:= TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(36);
WelcomeLabel2.Top := ScaleY(160);
WelcomeLabel2.Width := ScaleX(210);
WelcomeLabel2.Height := ScaleY(234);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Alignment := taCenter;
WelcomeLabel2.Font.Size := 12;
WelcomeLabel2.Font.Color:= clblack;
WelcomeLabel2.Font.Style:= [fsBold]
WelcomeLabel2.Font.Name:= 'Georgia'
WelcomeLabel2.ShowAccelChar := False;
WelcomeLabel2.Caption :=ExpandConstant('{cm:WelcomeLabel2}');
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Left := ScaleX(36);
WLabel2.Top := ScaleY(159);
WLabel2.Width := ScaleX(210);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Alignment := taCenter;
WLabel2.Font.Size := 12;
WLabel2.Font.Style:= [fsBold]
WLabel2.Font.Color:= clwhite;
WLabel2.Font.Name:= 'Georgia'
WLabel2.ShowAccelChar := False;
WLabel2.Caption := ExpandConstant('{cm:WelcomeLabel2}');
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

FinishedHeadingLabel:= TLabel.Create(WizardForm);
FinishedHeadingLabel.Left := ScaleX(36);
FinishedHeadingLabel.Top := ScaleY(89);
FinishedHeadingLabel.Width := ScaleX(210);
FinishedHeadingLabel.Height := ScaleY(100);
FinishedHeadingLabel.AutoSize := False;
FinishedHeadingLabel.WordWrap := True;
FinishedHeadingLabel.Alignment := taCenter;
FinishedHeadingLabel.Font.Size := 12;
FinishedHeadingLabel.Font.Color:= clblack;
FinishedHeadingLabel.Font.Style:= [fsBold]
FinishedHeadingLabel.Font.Name:= 'Georgia'
FinishedHeadingLabel.ShowAccelChar := False;
FinishedHeadingLabel.Caption :=ExpandConstant('{cm:FinisLabel1}');
FinishedHeadingLabel.Transparent := True;
FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(36);
FLabel1.Top := ScaleY(36);
FLabel1.Width := ScaleX(210);
FLabel1.Height := ScaleY(100);
FLabel1.AutoSize := False;
FLabel1.Alignment := taCenter;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Name := 'Georgia'
FLabel1.Font.Color:= clwhite;
FLabel1.Font.Style:= [fsBold]
FLabel1.ShowAccelChar := False;
FLabel1.Caption := ExpandConstant('{cm:FinisLabel1}');
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FinishedHeadingLabel1:= TLabel.Create(WizardForm);
FinishedHeadingLabel1.Left := ScaleX(36);
FinishedHeadingLabel1.Top := ScaleY(36);
FinishedHeadingLabel1.Width := ScaleX(210);
FinishedHeadingLabel1.Height := ScaleY(234);
FinishedHeadingLabel1.AutoSize := False;
FinishedHeadingLabel1.WordWrap := True;
FinishedHeadingLabel1.Alignment := taCenter;
FinishedHeadingLabel1.Font.Size := 12;
FinishedHeadingLabel1.Font.Color:= clblack;
FinishedHeadingLabel1.Font.Style:= [fsBold]
FinishedHeadingLabel1.Font.Name:= 'Georgia'
FinishedHeadingLabel1.ShowAccelChar := False;
FinishedHeadingLabel1.Caption :=ExpandConstant('{cm:FinisLabel2}');
FinishedHeadingLabel1.Transparent := True;
FinishedHeadingLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(36);
FLabel2.Left := ScaleX(36);
FLabel2.Width := ScaleX(210);
FLabel2.Height := ScaleY(234);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Alignment := taCenter;
FLabel2.Font.Size := 12;
FLabel2.Font.Name := 'Georgia'
FLabel2.Font.Style:= [fsBold]
FLabel2.Font.Color:= clwhite;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := ExpandConstant('{cm:FinisLabel2}');
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;

WizardForm.FinishedLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
end;

procedure WizardSmallImage();
begin
WizardForm.WizardSmallBitmapImage.SetBounds(ScaleX(0), ScaleY(0), WizardForm.MainPanel.Width, WizardForm.MainPanel.Height);

PageNameLabel:= TLabel.Create(WizardForm)
with WizardForm.PageNameLabel do
PageNameLabel.SetBounds(Left, Top, Width, Height);
PageNameLabel.Transparent:= True;
PageNameLabel.Font:= WizardForm.PageNameLabel.Font;
PageNameLabel.Font.Color:= clblack;
PageNameLabel.Parent:= WizardForm.MainPanel;

PageDescriptionLabel:= TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left:= WizardForm.PageDescriptionLabel.Left-12;
Top:= WizardForm.PageDescriptionLabel.Top;
Height:= WizardForm.PageDescriptionLabel.Height;
Width:= ScaleX(280);
AutoSize:= False;
WordWrap:= True;
Font.Name:= WizardForm.PageDescriptionLabel.Font.Name;
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;

WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
end;


function skinsdll(): Boolean;
begin
ExtractTemporaryFile('1.cjstyles');
LoadSkin(ExpandConstant('{tmp}\1.cjstyles'), '');
Result := True;
end;

procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', 'http://vk.com/tarantinosmusic', '' , '', SW_SHOW, ewNoWait, ResCode)
end;

procedure Logo();
var
BtnPanel: TPanel;
BtnImage: TBitmapImage;
begin
ExtractTemporaryFile('logo.bmp')

BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=20
Top:=325
Width:=132
Height:=27
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm
end;
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')
Parent:=BtnPanel
end;

end;

procedure InitializeWizard;
begin
progresbar();
Logo();
WizardImage();
WizardSmallImage();
end;


[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\Game\Bin\The.Sims.4.Launcher.exe
Name: {commondesktop}\{#MyAppName}; Filename: {app}\Game\Bin\The.Sims.4.Launcher.exe; Tasks: desktopicon


Автор: vint56
Дата сообщения: 29.09.2014 16:24
artemabu тебе нужен только ansi компилятор на unicode будет ошибка
Автор: sjwrec
Дата сообщения: 29.09.2014 16:25
artemabu
Код видимо собран из разных скриптов, поэтому может и не работать.
Но всё может если переделать здесь
[more=так]
procedure CurStepChanged(CurStep: TSetupStep);
var ChComp, TmpValue:longword;
n:integer;

begin
if CurStep = ssInstall then begin
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Visible:=false;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(135);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
CallBack:=WrapMyCallback(@ProgressCallback,2);
Cancel:=0;
OveralPct:=0;
end;

...
[/more]
то может быть сработает. Проверять мне некогда.

Добавлено:
А точно vint56 , может причина в этом.
Автор: AlekseyPopovv
Дата сообщения: 29.09.2014 16:57
Как сделать что бы значение AppId менялось в зависимости от выбранной версии?
То есть у меня в инсталле 4 версии: free, pro, bus, tec. При установке двух версий, в панели управления остаётся только последняя, то есть вторая затирает первую. Как избавиться от этого?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

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


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