Здравствуйте, совсем недавно начал изучать тему создания репаков.
При создании и оформлении своего первого инсталятора сталкнулся со следующей ошибкой.
После компиляции установочник не желает открываться, высвечивая статус "не отвечает". Долго пытался разобраться в чём дело, в итоге понял что конфликт идёт с частью скрипта отвечающем за всплывающее png изображение перед запуском установочника и с частью отвечающей за кликабельный логотип.
Примечательно то что этот же самый скрипт прекрасно компелируется и без проблем запускается если в [Files] вместо всей папки игры запаковать "пустышку" из нескольких файлов.
Уже кучу гайдов перерыл, решения так и не нашёл. Буду благодарен если кто сможет помочь разобраться.
Вот собственно сам скрипт:
читать дальше »
[Setup]
DiskSpanning=true
DiskSliceSize=1457664000
AppName=DOOM 3 - COOP
AppVerName=Doom 3 - Coop
AppPublisherURL=http://Coop-Land.ru/rookovodstva/356-rukovodstvo-zapuska-Doom-3-po-seti.html
AppSupportURL=http://Coop-Land.ru/rookovodstva/356-rukovodstvo-zapuska-Doom-3-po-seti.html
AppUpdatesURL=http://Coop-Land.ru/rookovodstva/356-rukovodstvo-zapuska-Doom-3-po-seti.html
DefaultDirName=Games\DOOM 3 - COOP
DefaultGroupName=DOOM 3 - COOP
AllowNoIcons=yes
OutputDir=D:\GAMES\SETUP\Созданные репаки
OutputBaseFilename=DOOM 3 - COOP
SetupIconFile=D:\GAMES\DOOM 3\lms4\Doom 3 Coop.ico
Compression=lzma/ultra64
SolidCompression=true
WizardImageFile=PIC\Fon.bmp
WizardSmallImageFile=PIC\Shapka.bmp
InternalCompressLevel=ultra64
[Languages]
Name: russian; MessagesFile: compiler:Default.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: D:\GAMES\DOOM 3\LMS4\LMS4.bat; DestDir: {app}\LMS4; Flags: ignoreversion
;Source: D:\GAMES\DOOM 3\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: PIC\logo.bmp; Flags: dontcopy
Source: DLL\CallbackCtrl.dll; Flags: dontcopy
Source: PIC\splash.png; Flags: dontcopy
Source: DLL\isgsg.dll; Flags: dontcopy
[Icons]
Name: {group}\DOOM 3 - COOP; Filename: {app}\LMS4\LMS4.bat; WorkingDir: {app}\LMS4; IconFileName: {app}\LMS4\Doom 3 Coop.ico
Name: {group}\{cm:UninstallProgram,DOOM 3 - COOP}; Filename: {uninstallexe}
Name: {commondesktop}\DOOM 3 - COOP; Filename: {app}\LMS4\LMS4.bat; WorkingDir: {app}\LMS4; IconFileName: {app}\LMS4\Doom 3 Coop.ico; Comment: "Запустить кооперативный режим Doom 3"; Tasks: desktopicon
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\DOOM 3 - COOP; Filename: {app}\LMS4\LMS4.bat; Tasks: quicklaunchicon
[Registry]
Root: HKLM; SubKey: SOFTWARE\id\Doom 3; ValueType: string; ValueName: CDKEY; ValueData: {app}; Flags: uninsdeletekey
[CustomMessages]
russian.Error2=Установка %nDoom 3 Coop Mod %nне завершена.
russian.Error3=%nВо время установки произошла ошибка, пожалуйста отключите сторонние программы и повторите попытку установки.%n%n%nНажмите «Завершить», чтобы выйти.
russian.WelcomeLabel1= Программа установит игру Doom 3 Coop Mod на Ваш компьютер.
russian.WelcomeLabel2= Нажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти.
russian.FinisLabel1=Игра %nDoom 3 Coop Mod%n установлена на Ваш компьютер.
[code]
var
PageNameLabel, PageDescriptionLabel, WelcomeLabel1,WelcomeLabel2,FLabel1, FLabel2, WLabel1, WLabel2, WelcomeLabel4,FinishedHeadingLabel, FinishedHeadingLabel1,WelcomeLabel3: TLabel;
/////////////////////////////// ФОНОВОЕ ИЗОБРАЖЕНИЕ ///////////////////////////////
procedure WizardImage();
begin
WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);
WelcomeLabel1:= TLabel.Create(WizardForm);
WelcomeLabel1.Left := ScaleX(149);
WelcomeLabel1.Top := ScaleY(119);
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(148);
WLabel1.Top := ScaleY(118);
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(149);
WelcomeLabel2.Top := ScaleY(184);
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(148);
WLabel2.Top := ScaleY(183);
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(99);
FinishedHeadingLabel.Top := ScaleY(117);
FinishedHeadingLabel.Width := ScaleX(308);
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(98);
FLabel1.Top := ScaleY(116);
FLabel1.Width := ScaleX(308);
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;
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;
/////////////////////////////////////////И.Ш.///////////////////////////////////////////
////////////////////////////////// ВСПЛЫВАЮЩЕЕ ЛОГО ////////////////////////////////////
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure Splash();
begin
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',1000,3000,1000,0,255,False, $FFFFFF,10);
end;
/////////////////////////////////////////В.Л.///////////////////////////////////////////
////////////////////////////////// КЛИКАБЕЛЬНОЕ ЛОГО ///////////////////////////////////
procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', 'http://Coop-Land.ru/rookovodstva/356-rukovodstvo-zapuska-Doom-3-po-seti.html', '' , '', 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:=192
Height:=26
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
Splash();
Logo();
WizardImage();
WizardSmallImage();
WizardForm.CancelButton.BringToFront;
end;