mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-25 05:11:56 +00:00
Updated installer generation
This commit is contained in:
parent
2dfe043e1e
commit
2f30f3ca14
6 changed files with 950 additions and 283 deletions
Binary file not shown.
Binary file not shown.
790
Setup/CodeDependencies.iss
Normal file
790
Setup/CodeDependencies.iss
Normal file
|
@ -0,0 +1,790 @@
|
||||||
|
; -- CodeDependencies.iss --
|
||||||
|
;
|
||||||
|
; This script shows how to download and install any dependency such as .NET,
|
||||||
|
; Visual C++ or SQL Server during your application's installation process.
|
||||||
|
;
|
||||||
|
; contribute: https://github.com/DomGries/InnoDependencyInstaller
|
||||||
|
|
||||||
|
|
||||||
|
; -----------
|
||||||
|
; SHARED CODE
|
||||||
|
; -----------
|
||||||
|
[Code]
|
||||||
|
// types and variables
|
||||||
|
type
|
||||||
|
TDependency_Entry = record
|
||||||
|
Filename: String;
|
||||||
|
Parameters: String;
|
||||||
|
Title: String;
|
||||||
|
URL: String;
|
||||||
|
Checksum: String;
|
||||||
|
ForceSuccess: Boolean;
|
||||||
|
RestartAfter: Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Dependency_Memo: String;
|
||||||
|
Dependency_List: array of TDependency_Entry;
|
||||||
|
Dependency_NeedRestart, Dependency_ForceX86: Boolean;
|
||||||
|
Dependency_DownloadPage: TDownloadWizardPage;
|
||||||
|
|
||||||
|
procedure Dependency_Add(const Filename, Parameters, Title, URL, Checksum: String; const ForceSuccess, RestartAfter: Boolean);
|
||||||
|
var
|
||||||
|
Dependency: TDependency_Entry;
|
||||||
|
DependencyCount: Integer;
|
||||||
|
begin
|
||||||
|
Dependency_Memo := Dependency_Memo + #13#10 + '%1' + Title;
|
||||||
|
|
||||||
|
Dependency.Filename := Filename;
|
||||||
|
Dependency.Parameters := Parameters;
|
||||||
|
Dependency.Title := Title;
|
||||||
|
|
||||||
|
if FileExists(ExpandConstant('{tmp}{\}') + Filename) then begin
|
||||||
|
Dependency.URL := '';
|
||||||
|
end else begin
|
||||||
|
Dependency.URL := URL;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Dependency.Checksum := Checksum;
|
||||||
|
Dependency.ForceSuccess := ForceSuccess;
|
||||||
|
Dependency.RestartAfter := RestartAfter;
|
||||||
|
|
||||||
|
DependencyCount := GetArrayLength(Dependency_List);
|
||||||
|
SetArrayLength(Dependency_List, DependencyCount + 1);
|
||||||
|
Dependency_List[DependencyCount] := Dependency;
|
||||||
|
end;
|
||||||
|
|
||||||
|
<event('InitializeWizard')>
|
||||||
|
procedure Dependency_Internal1;
|
||||||
|
begin
|
||||||
|
Dependency_DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
<event('PrepareToInstall')>
|
||||||
|
function Dependency_Internal2(var NeedsRestart: Boolean): String;
|
||||||
|
var
|
||||||
|
DependencyCount, DependencyIndex, ResultCode: Integer;
|
||||||
|
Retry: Boolean;
|
||||||
|
TempValue: String;
|
||||||
|
begin
|
||||||
|
DependencyCount := GetArrayLength(Dependency_List);
|
||||||
|
|
||||||
|
if DependencyCount > 0 then begin
|
||||||
|
Dependency_DownloadPage.Show;
|
||||||
|
|
||||||
|
for DependencyIndex := 0 to DependencyCount - 1 do begin
|
||||||
|
if Dependency_List[DependencyIndex].URL <> '' then begin
|
||||||
|
Dependency_DownloadPage.Clear;
|
||||||
|
Dependency_DownloadPage.Add(Dependency_List[DependencyIndex].URL, Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Checksum);
|
||||||
|
|
||||||
|
Retry := True;
|
||||||
|
while Retry do begin
|
||||||
|
Retry := False;
|
||||||
|
|
||||||
|
try
|
||||||
|
Dependency_DownloadPage.Download;
|
||||||
|
except
|
||||||
|
if Dependency_DownloadPage.AbortedByUser then begin
|
||||||
|
Result := Dependency_List[DependencyIndex].Title;
|
||||||
|
DependencyIndex := DependencyCount;
|
||||||
|
end else begin
|
||||||
|
case SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of
|
||||||
|
IDABORT: begin
|
||||||
|
Result := Dependency_List[DependencyIndex].Title;
|
||||||
|
DependencyIndex := DependencyCount;
|
||||||
|
end;
|
||||||
|
IDRETRY: begin
|
||||||
|
Retry := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if Result = '' then begin
|
||||||
|
for DependencyIndex := 0 to DependencyCount - 1 do begin
|
||||||
|
Dependency_DownloadPage.SetText(Dependency_List[DependencyIndex].Title, '');
|
||||||
|
Dependency_DownloadPage.SetProgress(DependencyIndex + 1, DependencyCount + 1);
|
||||||
|
|
||||||
|
while True do begin
|
||||||
|
ResultCode := 0;
|
||||||
|
if ShellExec('', ExpandConstant('{tmp}{\}') + Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then begin
|
||||||
|
if Dependency_List[DependencyIndex].RestartAfter then begin
|
||||||
|
if DependencyIndex = DependencyCount - 1 then begin
|
||||||
|
Dependency_NeedRestart := True;
|
||||||
|
end else begin
|
||||||
|
NeedsRestart := True;
|
||||||
|
Result := Dependency_List[DependencyIndex].Title;
|
||||||
|
end;
|
||||||
|
break;
|
||||||
|
end else if (ResultCode = 0) or Dependency_List[DependencyIndex].ForceSuccess then begin // ERROR_SUCCESS (0)
|
||||||
|
break;
|
||||||
|
end else if ResultCode = 1641 then begin // ERROR_SUCCESS_REBOOT_INITIATED (1641)
|
||||||
|
NeedsRestart := True;
|
||||||
|
Result := Dependency_List[DependencyIndex].Title;
|
||||||
|
break;
|
||||||
|
end else if ResultCode = 3010 then begin // ERROR_SUCCESS_REBOOT_REQUIRED (3010)
|
||||||
|
Dependency_NeedRestart := True;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
case SuppressibleMsgBox(FmtMessage(SetupMessage(msgErrorFunctionFailed), [Dependency_List[DependencyIndex].Title, IntToStr(ResultCode)]), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of
|
||||||
|
IDABORT: begin
|
||||||
|
Result := Dependency_List[DependencyIndex].Title;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
IDIGNORE: begin
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if Result <> '' then begin
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if NeedsRestart then begin
|
||||||
|
TempValue := '"' + ExpandConstant('{srcexe}') + '" /restart=1 /LANG="' + ExpandConstant('{language}') + '" /DIR="' + WizardDirValue + '" /GROUP="' + WizardGroupValue + '" /TYPE="' + WizardSetupType(False) + '" /COMPONENTS="' + WizardSelectedComponents(False) + '" /TASKS="' + WizardSelectedTasks(False) + '"';
|
||||||
|
if WizardNoIcons then begin
|
||||||
|
TempValue := TempValue + ' /NOICONS';
|
||||||
|
end;
|
||||||
|
RegWriteStringValue(HKA, 'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce', '{#SetupSetting("AppName")}', TempValue);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Dependency_DownloadPage.Hide;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
<event('UpdateReadyMemo')>
|
||||||
|
function Dependency_Internal3(const Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
if MemoUserInfoInfo <> '' then begin
|
||||||
|
Result := Result + MemoUserInfoInfo + Newline + NewLine;
|
||||||
|
end;
|
||||||
|
if MemoDirInfo <> '' then begin
|
||||||
|
Result := Result + MemoDirInfo + Newline + NewLine;
|
||||||
|
end;
|
||||||
|
if MemoTypeInfo <> '' then begin
|
||||||
|
Result := Result + MemoTypeInfo + Newline + NewLine;
|
||||||
|
end;
|
||||||
|
if MemoComponentsInfo <> '' then begin
|
||||||
|
Result := Result + MemoComponentsInfo + Newline + NewLine;
|
||||||
|
end;
|
||||||
|
if MemoGroupInfo <> '' then begin
|
||||||
|
Result := Result + MemoGroupInfo + Newline + NewLine;
|
||||||
|
end;
|
||||||
|
if MemoTasksInfo <> '' then begin
|
||||||
|
Result := Result + MemoTasksInfo;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if Dependency_Memo <> '' then begin
|
||||||
|
if MemoTasksInfo = '' then begin
|
||||||
|
Result := Result + SetupMessage(msgReadyMemoTasks);
|
||||||
|
end;
|
||||||
|
Result := Result + FmtMessage(Dependency_Memo, [Space]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
<event('NeedRestart')>
|
||||||
|
function Dependency_Internal4: Boolean;
|
||||||
|
begin
|
||||||
|
Result := Dependency_NeedRestart;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Dependency_IsX64: Boolean;
|
||||||
|
begin
|
||||||
|
Result := not Dependency_ForceX86 and Is64BitInstallMode;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Dependency_String(const x86, x64: String): String;
|
||||||
|
begin
|
||||||
|
if Dependency_IsX64 then begin
|
||||||
|
Result := x64;
|
||||||
|
end else begin
|
||||||
|
Result := x86;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Dependency_ArchSuffix: String;
|
||||||
|
begin
|
||||||
|
Result := Dependency_String('', '_x64');
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Dependency_ArchTitle: String;
|
||||||
|
begin
|
||||||
|
Result := Dependency_String(' (x86)', ' (x64)');
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Dependency_IsNetCoreInstalled(const Version: String): Boolean;
|
||||||
|
var
|
||||||
|
ResultCode: Integer;
|
||||||
|
begin
|
||||||
|
// source code: https://github.com/dotnet/deployment-tools/tree/master/src/clickonce/native/projects/NetCoreCheck
|
||||||
|
if not FileExists(ExpandConstant('{tmp}{\}') + 'netcorecheck' + Dependency_ArchSuffix + '.exe') then begin
|
||||||
|
ExtractTemporaryFile('netcorecheck' + Dependency_ArchSuffix + '.exe');
|
||||||
|
end;
|
||||||
|
Result := ShellExec('', ExpandConstant('{tmp}{\}') + 'netcorecheck' + Dependency_ArchSuffix + '.exe', Version, '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and (ResultCode = 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet35;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net35-sp1
|
||||||
|
if not IsDotNetInstalled(net35, 1) then begin
|
||||||
|
Dependency_Add('dotnetfx35.exe',
|
||||||
|
'/lang:enu /passive /norestart',
|
||||||
|
'.NET Framework 3.5 Service Pack 1',
|
||||||
|
'https://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet40;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net40
|
||||||
|
if not IsDotNetInstalled(net4full, 0) then begin
|
||||||
|
Dependency_Add('dotNetFx40_Full_setup.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Framework 4.0',
|
||||||
|
'https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet45;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net452
|
||||||
|
if not IsDotNetInstalled(net452, 0) then begin
|
||||||
|
Dependency_Add('dotnetfx45.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Framework 4.5.2',
|
||||||
|
'https://go.microsoft.com/fwlink/?LinkId=397707',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet46;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net462
|
||||||
|
if not IsDotNetInstalled(net462, 0) then begin
|
||||||
|
Dependency_Add('dotnetfx46.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Framework 4.6.2',
|
||||||
|
'https://go.microsoft.com/fwlink/?linkid=780596',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet47;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net472
|
||||||
|
if not IsDotNetInstalled(net472, 0) then begin
|
||||||
|
Dependency_Add('dotnetfx47.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Framework 4.7.2',
|
||||||
|
'https://go.microsoft.com/fwlink/?LinkId=863262',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet48;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-framework/net48
|
||||||
|
if not IsDotNetInstalled(net48, 0) then begin
|
||||||
|
Dependency_Add('dotnetfx48.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Framework 4.8',
|
||||||
|
'https://go.microsoft.com/fwlink/?LinkId=2085155',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddNetCore31;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-core/3.1
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 3.1.22') then begin
|
||||||
|
Dependency_Add('netcore31' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Core Runtime 3.1.22' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c2437aed-8cc4-41d0-a239-d6c7cf7bddae/062c37e8b06df740301c0bca1b0b7b9a/dotnet-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/4e95705e-1bb6-4764-b899-1b97eb70ea1d/dd311e073bd3e25b2efe2dcf02727e81/dotnet-runtime-3.1.22-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddNetCore31Asp;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-core/3.1
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 3.1.22') then begin
|
||||||
|
Dependency_Add('netcore31asp' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'ASP.NET Core Runtime 3.1.22' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0a1a2ee5-b8ed-4f0d-a4af-a7bce9a9ac2b/d452039b49d79e8897f272c3ab34b875/aspnetcore-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/80e52143-31e8-450e-aa94-b3f8484aaba9/4b69e5c77d50e7b367960a0079c90a99/aspnetcore-runtime-3.1.22-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddNetCore31Desktop;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet-core/3.1
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 3.1.22') then begin
|
||||||
|
Dependency_Add('netcore31desktop' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Desktop Runtime 3.1.22' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/e4fcd574-4487-4b4b-8ca8-c23177c6f59f/c6d67a04956169dc21895cdcb42bf344/windowsdesktop-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/1c14e24b-7f31-42dc-ba3c-83295a2d6f7e/41b93591162dfe556cc160ae44fbe75e/windowsdesktop-runtime-3.1.22-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet50;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/5.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 5.0.13') then begin
|
||||||
|
Dependency_Add('dotnet50' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Runtime 5.0.13' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4a79fcd5-d61b-4606-8496-68071c8099c6/2bf770ca40521e8c4563072592eadd06/dotnet-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/fccf43d2-3e62-4ede-b5a5-592a7ccded7b/6339f1fdfe3317df5b09adf65f0261ab/dotnet-runtime-5.0.13-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet50Asp;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/5.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 5.0.13') then begin
|
||||||
|
Dependency_Add('dotnet50asp' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'ASP.NET Core Runtime 5.0.13' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/340f9482-fc43-4ef7-b434-e2ed57f55cb3/c641b805cef3823769409a6dbac5746b/aspnetcore-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/aac560f3-eac8-437e-aebd-9830119deb10/6a3880161cf527e4ec71f67efe4d91ad/aspnetcore-runtime-5.0.13-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet50Desktop;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/5.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 5.0.13') then begin
|
||||||
|
Dependency_Add('dotnet50desktop' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Desktop Runtime 5.0.13' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c8125c6b-d399-4be3-b201-8f1394fc3b25/724758f754fc7b67daba74db8d6d91d9/windowsdesktop-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/2bfb80f2-b8f2-44b0-90c1-d3c8c1c8eac8/409dd3d3367feeeda048f4ff34b32e82/windowsdesktop-runtime-5.0.13-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet60;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/6.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 6.0.2') then begin
|
||||||
|
Dependency_Add('dotnet60' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Runtime 6.0.2' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/2c266f64-4c86-4209-8113-0146a9c93bef/f771275c8cb0df884dcfc290569fba3a/dotnet-runtime-6.0.2-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/0b3e8ad9-7914-4489-8d02-58b551c2efea/fdc3f3a171bf0b7bb90c01f5faa59fc4/dotnet-runtime-6.0.2-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet60Asp;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/6.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 6.0.2') then begin
|
||||||
|
Dependency_Add('dotnet60asp' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'ASP.NET Core Runtime 6.0.2' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/ad7d20a7-debf-4399-b59b-04419ae7adfe/73918e15d0bde4431546d8f659ed7381/aspnetcore-runtime-6.0.2-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/ef70aabf-e945-4a82-8303-7675e84a183c/a1ef3d32b8572842684974747eee034b/aspnetcore-runtime-6.0.2-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDotNet60Desktop;
|
||||||
|
begin
|
||||||
|
// https://dotnet.microsoft.com/download/dotnet/6.0
|
||||||
|
if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 6.0.2') then begin
|
||||||
|
Dependency_Add('dotnet60desktop' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
|
||||||
|
'.NET Desktop Runtime 6.0.2' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/f5f7ed62-0973-400b-9772-4cf0eef96801/87959c77e1fceeafc40c867f9c238bbc/windowsdesktop-runtime-6.0.2-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/7fbe3ce3-4082-4995-93de-674038ac919b/56d3fa94d78dc3f39fc70d73ef174c93/windowsdesktop-runtime-6.0.2-win-x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2005;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=26347
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{86C9D5AA-F00C-4921-B3F2-C60AF92E2844}', '{A8D19029-8E5C-4E22-8011-48070F9E796E}'), PackVersionComponents(8, 0, 61000, 0)) then begin
|
||||||
|
Dependency_Add('vcredist2005' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/q',
|
||||||
|
'Visual C++ 2005 Service Pack 1 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE', 'https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2008;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=26368
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{DE2C306F-A067-38EF-B86C-03DE4B0312F9}', '{FDA45DDF-8E17-336F-A3ED-356B7B7C688A}'), PackVersionComponents(9, 0, 30729, 6161)) then begin
|
||||||
|
Dependency_Add('vcredist2008' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/q',
|
||||||
|
'Visual C++ 2008 Service Pack 1 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe', 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2010;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=26999
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}', '{5B75F761-BAC8-33BC-A381-464DDDD813A3}'), PackVersionComponents(10, 0, 40219, 0)) then begin
|
||||||
|
Dependency_Add('vcredist2010' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/passive /norestart',
|
||||||
|
'Visual C++ 2010 Service Pack 1 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2012;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=30679
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{4121ED58-4BD9-3E7B-A8B5-9F8BAAE045B7}', '{EFA6AFA1-738E-3E00-8101-FD03B86B29D1}'), PackVersionComponents(11, 0, 61030, 0)) then begin
|
||||||
|
Dependency_Add('vcredist2012' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/passive /norestart',
|
||||||
|
'Visual C++ 2012 Update 4 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2013;
|
||||||
|
begin
|
||||||
|
// https://support.microsoft.com/en-us/help/4032938
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{B59F5BF1-67C8-3802-8E59-2CE551A39FC5}', '{20400CF0-DE7C-327E-9AE4-F0F38D9085F8}'), PackVersionComponents(12, 0, 40664, 0)) then begin
|
||||||
|
Dependency_Add('vcredist2013' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/passive /norestart',
|
||||||
|
'Visual C++ 2013 Update 5 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://download.visualstudio.microsoft.com/download/pr/10912113/5da66ddebb0ad32ebd4b922fd82e8e25/vcredist_x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddVC2015To2022;
|
||||||
|
begin
|
||||||
|
// https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist
|
||||||
|
if not IsMsiProductInstalled(Dependency_String('{65E5BD06-6392-3027-8C26-853107D3CF1A}', '{36F68A90-239C-34DF-B58C-64B30153CE35}'), PackVersionComponents(14, 30, 30704, 0)) then begin
|
||||||
|
Dependency_Add('vcredist2022' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/passive /norestart',
|
||||||
|
'Visual C++ 2015-2022 Redistributable' + Dependency_ArchTitle,
|
||||||
|
Dependency_String('https://aka.ms/vs/17/release/vc_redist.x86.exe', 'https://aka.ms/vs/17/release/vc_redist.x64.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddDirectX;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=35
|
||||||
|
Dependency_Add('dxwebsetup.exe',
|
||||||
|
'/q',
|
||||||
|
'DirectX Runtime',
|
||||||
|
'https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe',
|
||||||
|
'', True, False);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2008Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=30438
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(10, 50, 4000, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2008express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2008 R2 Service Pack 2 Express',
|
||||||
|
Dependency_String('https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR_x64_ENU.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2012Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=56042
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(11, 0, 7001, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2012express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2012 Service Pack 4 Express',
|
||||||
|
Dependency_String('https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR_x64_ENU.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2014Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=57473
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(12, 0, 6024, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2014express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2014 Service Pack 3 Express',
|
||||||
|
Dependency_String('https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR_x64_ENU.exe'),
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2016Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=56840
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(13, 0, 5026, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2016express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2016 Service Pack 2 Express',
|
||||||
|
'https://download.microsoft.com/download/3/7/6/3767D272-76A1-4F31-8849-260BD37924E4/SQLServer2016-SSEI-Expr.exe',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2017Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=55994
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(14, 0, 0, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2017express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2017 Express',
|
||||||
|
'https://download.microsoft.com/download/5/E/9/5E9B18CC-8FD5-467E-B5BF-BADE39C51F73/SQLServer2017-SSEI-Expr.exe',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Dependency_AddSql2019Express;
|
||||||
|
var
|
||||||
|
Version: String;
|
||||||
|
PackedVersion: Int64;
|
||||||
|
begin
|
||||||
|
// https://www.microsoft.com/en-us/download/details.aspx?id=101064
|
||||||
|
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(15, 0, 0, 0)) < 0) then begin
|
||||||
|
Dependency_Add('sql2019express' + Dependency_ArchSuffix + '.exe',
|
||||||
|
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
|
||||||
|
'SQL Server 2019 Express',
|
||||||
|
'https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe',
|
||||||
|
'', False, False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
; -------------
|
||||||
|
; EXAMPLE SETUP
|
||||||
|
; -------------
|
||||||
|
#ifndef Dependency_NoExampleSetup
|
||||||
|
|
||||||
|
; comment out dependency defines to disable installing them
|
||||||
|
#define UseDotNet35
|
||||||
|
#define UseDotNet40
|
||||||
|
#define UseDotNet45
|
||||||
|
#define UseDotNet46
|
||||||
|
#define UseDotNet47
|
||||||
|
#define UseDotNet48
|
||||||
|
|
||||||
|
; requires netcorecheck.exe and netcorecheck_x64.exe (see download link below)
|
||||||
|
#define UseNetCoreCheck
|
||||||
|
#ifdef UseNetCoreCheck
|
||||||
|
#define UseNetCore31
|
||||||
|
#define UseNetCore31Asp
|
||||||
|
#define UseNetCore31Desktop
|
||||||
|
#define UseDotNet50
|
||||||
|
#define UseDotNet50Asp
|
||||||
|
#define UseDotNet50Desktop
|
||||||
|
#define UseDotNet60
|
||||||
|
#define UseDotNet60Asp
|
||||||
|
#define UseDotNet60Desktop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define UseVC2005
|
||||||
|
#define UseVC2008
|
||||||
|
#define UseVC2010
|
||||||
|
#define UseVC2012
|
||||||
|
#define UseVC2013
|
||||||
|
#define UseVC2015To2022
|
||||||
|
|
||||||
|
; requires dxwebsetup.exe (see download link below)
|
||||||
|
;#define UseDirectX
|
||||||
|
|
||||||
|
#define UseSql2008Express
|
||||||
|
#define UseSql2012Express
|
||||||
|
#define UseSql2014Express
|
||||||
|
#define UseSql2016Express
|
||||||
|
#define UseSql2017Express
|
||||||
|
#define UseSql2019Express
|
||||||
|
|
||||||
|
#define MyAppSetupName 'MyProgram'
|
||||||
|
#define MyAppVersion '1.0'
|
||||||
|
#define MyAppPublisher 'Inno Setup'
|
||||||
|
#define MyAppCopyright 'Copyright © Inno Setup'
|
||||||
|
#define MyAppURL 'https://jrsoftware.org/isinfo.php'
|
||||||
|
|
||||||
|
AppName={#MyAppSetupName}
|
||||||
|
AppVersion={#MyAppVersion}
|
||||||
|
AppVerName={#MyAppSetupName} {#MyAppVersion}
|
||||||
|
AppCopyright={#MyAppCopyright}
|
||||||
|
VersionInfoVersion={#MyAppVersion}
|
||||||
|
VersionInfoCompany={#MyAppPublisher}
|
||||||
|
AppPublisher={#MyAppPublisher}
|
||||||
|
AppPublisherURL={#MyAppURL}
|
||||||
|
AppSupportURL={#MyAppURL}
|
||||||
|
AppUpdatesURL={#MyAppURL}
|
||||||
|
OutputBaseFilename={#MyAppSetupName}-{#MyAppVersion}
|
||||||
|
DefaultGroupName={#MyAppSetupName}
|
||||||
|
DefaultDirName={autopf}\{#MyAppSetupName}
|
||||||
|
UninstallDisplayIcon={app}\MyProgram.exe
|
||||||
|
SourceDir=src
|
||||||
|
OutputDir={#SourcePath}\bin
|
||||||
|
AllowNoIcons=yes
|
||||||
|
PrivilegesRequired=admin
|
||||||
|
|
||||||
|
; remove next line if you only deploy 32-bit binaries and dependencies
|
||||||
|
ArchitecturesInstallIn64BitMode=x64
|
||||||
|
|
||||||
|
[Languages]
|
||||||
|
Name: en; MessagesFile: "compiler:Default.isl"
|
||||||
|
Name: nl; MessagesFile: "compiler:Languages\Dutch.isl"
|
||||||
|
Name: de; MessagesFile: "compiler:Languages\German.isl"
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
#ifdef UseNetCoreCheck
|
||||||
|
; download netcorecheck.exe: https://go.microsoft.com/fwlink/?linkid=2135256
|
||||||
|
; download netcorecheck_x64.exe: https://go.microsoft.com/fwlink/?linkid=2135504
|
||||||
|
Source: "netcorecheck.exe"; Flags: dontcopy noencryption
|
||||||
|
Source: "netcorecheck_x64.exe"; Flags: dontcopy noencryption
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UseDirectX
|
||||||
|
Source: "dxwebsetup.exe"; Flags: dontcopy noencryption
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Source: "MyProg-x64.exe"; DestDir: "{app}"; DestName: "MyProg.exe"; Check: Dependency_IsX64; Flags: ignoreversion
|
||||||
|
Source: "MyProg.exe"; DestDir: "{app}"; Check: not Dependency_IsX64; Flags: ignoreversion
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: "{group}\{#MyAppSetupName}"; Filename: "{app}\MyProg.exe"
|
||||||
|
Name: "{group}\{cm:UninstallProgram,{#MyAppSetupName}}"; Filename: "{uninstallexe}"
|
||||||
|
Name: "{commondesktop}\{#MyAppSetupName}"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon
|
||||||
|
|
||||||
|
[Tasks]
|
||||||
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"
|
||||||
|
|
||||||
|
[Run]
|
||||||
|
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,{#MyAppSetupName}}"; Flags: nowait postinstall skipifsilent
|
||||||
|
|
||||||
|
[Code]
|
||||||
|
function InitializeSetup: Boolean;
|
||||||
|
begin
|
||||||
|
#ifdef UseDotNet35
|
||||||
|
Dependency_AddDotNet35;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet40
|
||||||
|
Dependency_AddDotNet40;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet45
|
||||||
|
Dependency_AddDotNet45;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet46
|
||||||
|
Dependency_AddDotNet46;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet47
|
||||||
|
Dependency_AddDotNet47;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet48
|
||||||
|
Dependency_AddDotNet48;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UseNetCore31
|
||||||
|
Dependency_AddNetCore31;
|
||||||
|
#endif
|
||||||
|
#ifdef UseNetCore31Asp
|
||||||
|
Dependency_AddNetCore31Asp;
|
||||||
|
#endif
|
||||||
|
#ifdef UseNetCore31Desktop
|
||||||
|
Dependency_AddNetCore31Desktop;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet50
|
||||||
|
Dependency_AddDotNet50;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet50Asp
|
||||||
|
Dependency_AddDotNet50Asp;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet50Desktop
|
||||||
|
Dependency_AddDotNet50Desktop;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet60
|
||||||
|
Dependency_AddDotNet60;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet60Asp
|
||||||
|
Dependency_AddDotNet60Asp;
|
||||||
|
#endif
|
||||||
|
#ifdef UseDotNet60Desktop
|
||||||
|
Dependency_AddDotNet60Desktop;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UseVC2005
|
||||||
|
Dependency_AddVC2005;
|
||||||
|
#endif
|
||||||
|
#ifdef UseVC2008
|
||||||
|
Dependency_AddVC2008;
|
||||||
|
#endif
|
||||||
|
#ifdef UseVC2010
|
||||||
|
Dependency_AddVC2010;
|
||||||
|
#endif
|
||||||
|
#ifdef UseVC2012
|
||||||
|
Dependency_AddVC2012;
|
||||||
|
#endif
|
||||||
|
#ifdef UseVC2013
|
||||||
|
//Dependency_ForceX86 := True; // force 32-bit install of next dependencies
|
||||||
|
Dependency_AddVC2013;
|
||||||
|
//Dependency_ForceX86 := False; // disable forced 32-bit install again
|
||||||
|
#endif
|
||||||
|
#ifdef UseVC2015To2022
|
||||||
|
Dependency_AddVC2015To2022;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UseDirectX
|
||||||
|
ExtractTemporaryFile('dxwebsetup.exe');
|
||||||
|
Dependency_AddDirectX;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UseSql2008Express
|
||||||
|
Dependency_AddSql2008Express;
|
||||||
|
#endif
|
||||||
|
#ifdef UseSql2012Express
|
||||||
|
Dependency_AddSql2012Express;
|
||||||
|
#endif
|
||||||
|
#ifdef UseSql2014Express
|
||||||
|
Dependency_AddSql2014Express;
|
||||||
|
#endif
|
||||||
|
#ifdef UseSql2016Express
|
||||||
|
Dependency_AddSql2016Express;
|
||||||
|
#endif
|
||||||
|
#ifdef UseSql2017Express
|
||||||
|
Dependency_AddSql2017Express;
|
||||||
|
#endif
|
||||||
|
#ifdef UseSql2019Express
|
||||||
|
Dependency_AddSql2019Express;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
#endif
|
158
Setup/UDBuilder_setup.iss
Normal file
158
Setup/UDBuilder_setup.iss
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
; Script generated by the Inno Setup Script Wizard.
|
||||||
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||||
|
|
||||||
|
#define public Dependency_NoExampleSetup
|
||||||
|
#include "CodeDependencies.iss"
|
||||||
|
|
||||||
|
#define UDB_arch "x64"
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
AppName=Ultimate Doom Builder
|
||||||
|
AppVersion={code:GetBuildNumberString|..\Build\Builder.exe}
|
||||||
|
AppVerName=Ultimate Doom Builder {#SetupSetting("AppVersion")} ({#UDB_arch})
|
||||||
|
AppPublisher=ZZYZX
|
||||||
|
AppPublisherURL=https://forum.zdoom.org/memberlist.php?mode=viewprofile&u=7527
|
||||||
|
AppSupportURL=https://forum.zdoom.org/viewtopic.php?f=232&t=66745
|
||||||
|
AppUpdatesURL=https://devbuilds.drdteam.org/ultimatedoombuilder/
|
||||||
|
DefaultDirName={userpf}\Ultimate Doom Builder
|
||||||
|
DefaultGroupName=Ultimate Doom Builder
|
||||||
|
AllowNoIcons=true
|
||||||
|
LicenseFile=..\LICENSE.txt
|
||||||
|
OutputDir=..\Release
|
||||||
|
OutputBaseFilename=Setup
|
||||||
|
Compression=lzma/ultra64
|
||||||
|
SolidCompression=true
|
||||||
|
SourceDir=..\Build
|
||||||
|
SetupLogging=false
|
||||||
|
AppMutex=ultimatedoombuilder
|
||||||
|
PrivilegesRequired=lowest
|
||||||
|
ShowLanguageDialog=no
|
||||||
|
LanguageDetectionMethod=none
|
||||||
|
MinVersion=0,6.1sp1
|
||||||
|
UninstallDisplayIcon={app}\Updater.exe
|
||||||
|
WizardImageFile=..\Setup\WizModernImage-IS.bmp
|
||||||
|
WizardSmallImageFile=..\Setup\WizModernSmallImage-IS.bmp
|
||||||
|
#if UDB_arch != "x86"
|
||||||
|
ArchitecturesInstallIn64BitMode=x64
|
||||||
|
ArchitecturesAllowed=x64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
[Languages]
|
||||||
|
Name: english; MessagesFile: compiler:Default.isl
|
||||||
|
|
||||||
|
[Tasks]
|
||||||
|
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
Source: Builder.exe; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: Builder.pdb; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: UDBuilder.default.cfg; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: Updater.exe; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: Updater.ini; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: Refmanual.chm; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: BuilderNative.dll; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: SharpCompress.dll; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: ScintillaNET.dll; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: TabControlEX.dll; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: LICENSE.txt; DestDir: {app}; Flags: ignoreversion
|
||||||
|
Source: Compilers\*; DestDir: {app}\Compilers; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: Configurations\*; DestDir: {app}\Configurations; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: Scripting\*; DestDir: {app}\Scripting; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: Snippets\*; DestDir: {app}\Snippets; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: UDBScript\Libraries\*; DestDir: {app}\UDBScript\Libraries; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: UDBScript\Scripts\Examples\*; DestDir: {app}\UDBScript\Scripts\Examples; Flags: ignoreversion recursesubdirs
|
||||||
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||||
|
Source: Plugins\AutomapMode.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\AutomapMode.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\BuilderModes.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\BuilderModes.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\BuilderEffects.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\BuilderEffects.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\ColorPicker.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\ColorPicker.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\CommentsPanel.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\CommentsPanel.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\NodesViewer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\NodesViewer.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\SoundPropagationMode.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\SoundPropagationMode.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\StairSectorBuilder.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\StairSectorBuilder.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\TagExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\TagExplorer.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\TagRange.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\TagRange.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\ThreeDFloorMode.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\ThreeDFloorMode.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\UDBScript.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\UDBScript.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\VisplaneExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\VisplaneExplorer.pdb; DestDir: {app}\Plugins; Flags: ignoreversion
|
||||||
|
Source: Plugins\Loadorder.cfg; DestDir: {app}\Plugins; Flags: ignoreversion onlyifdoesntexist
|
||||||
|
Source: Plugins\Dependencies\*; DestDir: {app}\Plugins\Dependencies; Flags: ignoreversion
|
||||||
|
Source: Sprites\*; DestDir: {app}\Sprites; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: Textures\*; DestDir: {app}\Textures; Flags: ignoreversion
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: {group}\Ultimate Doom Builder; Filename: {app}\Builder.exe
|
||||||
|
Name: {group}\{cm:UninstallProgram,Ultimate Doom Builder}; Filename: {uninstallexe}
|
||||||
|
Name: {commondesktop}\Ultimate Doom Builder; Filename: {app}\Builder.exe; Tasks: desktopicon
|
||||||
|
|
||||||
|
[Run]
|
||||||
|
Filename: {app}\Builder.exe; Description: Run {#SetupSetting("AppName")}; Flags: postinstall skipifsilent
|
||||||
|
|
||||||
|
[UninstallDelete]
|
||||||
|
Name: {app}; Type: filesandordirs
|
||||||
|
|
||||||
|
;[InstallDelete]
|
||||||
|
;Name: {app}\Builder.pdb; Type: files
|
||||||
|
;Name: {app}\Builder.xml; Type: files
|
||||||
|
|
||||||
|
[Registry]
|
||||||
|
Root: HKCU; Subkey: SOFTWARE\Ultimate Doom Builder\; ValueType: string; ValueName: Location; ValueData: {app}; Flags: uninsdeletevalue
|
||||||
|
|
||||||
|
[Messages]
|
||||||
|
ReadyLabel2a=Continue to begin with the installation, or click Back if you want to review or change any settings.
|
||||||
|
|
||||||
|
[Code]
|
||||||
|
// When the wizard initializes
|
||||||
|
procedure InitializeWizard();
|
||||||
|
begin
|
||||||
|
// .Net and VC Redistributables. Those come from CodeDependencies.iss
|
||||||
|
Dependency_AddDotNet47;
|
||||||
|
Dependency_AddVC2015To2022;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//Remove configs?
|
||||||
|
procedure DeinitializeUninstall();
|
||||||
|
begin
|
||||||
|
if MsgBox('Delete map restore data and program configuration files?', mbConfirmation, MB_YESNO) = IDYES then
|
||||||
|
begin
|
||||||
|
// Remove restore data
|
||||||
|
DelTree(ExpandConstant('{localappdata}\Doom Builder\Restore'), True, True, True);
|
||||||
|
|
||||||
|
// Remove configs
|
||||||
|
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\UDBuilder.cfg'));
|
||||||
|
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\UDBuilder.log'));
|
||||||
|
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\UDBCrash.txt'));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetBuildNumberString(const Filename: String): String;
|
||||||
|
var
|
||||||
|
MS, LS: Cardinal;
|
||||||
|
Build: Cardinal;
|
||||||
|
Success: Boolean;
|
||||||
|
ASD: String;
|
||||||
|
begin
|
||||||
|
GetVersionNumbersString(Filename, ASD);
|
||||||
|
Success := GetVersionNumbers(Filename, MS, LS);
|
||||||
|
|
||||||
|
if Success then
|
||||||
|
begin
|
||||||
|
Build := ls and $FFFF;
|
||||||
|
Result := Format('R%d', [Build]);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := 'Unknown version';
|
||||||
|
end;
|
|
@ -1,281 +0,0 @@
|
||||||
; Script generated by the Inno Setup Script Wizard.
|
|
||||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
|
||||||
|
|
||||||
[Setup]
|
|
||||||
AppName=Ultimate Doom Builder
|
|
||||||
AppVerName=Ultimate Doom Builder
|
|
||||||
AppPublisher=ZZYZX
|
|
||||||
AppPublisherURL=https://forum.zdoom.org/memberlist.php?mode=viewprofile&u=7527
|
|
||||||
AppSupportURL=https://forum.zdoom.org/viewtopic.php?f=232&t=66745
|
|
||||||
AppUpdatesURL=https://devbuilds.drdteam.org/ultimatedoombuilder/
|
|
||||||
DefaultDirName={pf}\Ultimate Doom Builder
|
|
||||||
DefaultGroupName=Ultimate Doom Builder
|
|
||||||
AllowNoIcons=true
|
|
||||||
LicenseFile=..\LICENSE.txt
|
|
||||||
OutputDir=..\Release
|
|
||||||
OutputBaseFilename=Setup
|
|
||||||
Compression=lzma/ultra64
|
|
||||||
SolidCompression=true
|
|
||||||
SourceDir=..\Build
|
|
||||||
SetupLogging=false
|
|
||||||
AppMutex=ultimatedoombuilder
|
|
||||||
PrivilegesRequired=admin
|
|
||||||
ShowLanguageDialog=no
|
|
||||||
LanguageDetectionMethod=none
|
|
||||||
MinVersion=0,6.0
|
|
||||||
UninstallDisplayIcon={app}\Updater.exe
|
|
||||||
WizardImageFile=..\Setup\WizModernImage-IS.bmp
|
|
||||||
WizardSmallImageFile=..\Setup\WizModernSmallImage-IS.bmp
|
|
||||||
|
|
||||||
[Languages]
|
|
||||||
Name: english; MessagesFile: compiler:Default.isl
|
|
||||||
|
|
||||||
[Tasks]
|
|
||||||
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
|
||||||
|
|
||||||
[Files]
|
|
||||||
Source: Setup\dotnetfx35setup.exe; DestDir: {tmp}; Flags: dontcopy
|
|
||||||
Source: Setup\vcredist_x86.exe; DestDir: {tmp}; Flags: dontcopy
|
|
||||||
Source: Builder.exe; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: GZBuilder.default.cfg; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: Updater.exe; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: Updater.ini; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: Refmanual.chm; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: DevIL.dll; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: BuilderNative.dll; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: SharpCompress.dll; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: ScintillaNET.dll; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: TabControlEX.dll; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: LICENSE.txt; DestDir: {app}; Flags: ignoreversion
|
|
||||||
Source: Compilers\*; DestDir: {app}\Compilers; Flags: ignoreversion recursesubdirs
|
|
||||||
Source: Configurations\*; DestDir: {app}\Configurations; Flags: ignoreversion recursesubdirs
|
|
||||||
Source: Scripting\*; DestDir: {app}\Scripting; Flags: ignoreversion recursesubdirs
|
|
||||||
Source: Snippets\*; DestDir: {app}\Snippets; Flags: ignoreversion recursesubdirs
|
|
||||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
|
||||||
Source: Plugins\BuilderModes.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\BuilderEffects.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\ColorPicker.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\CommentsPanel.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\NodesViewer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\SoundPropagationMode.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\StairSectorBuilder.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\TagExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\TagRange.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\VisplaneExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
|
|
||||||
Source: Plugins\Loadorder.cfg; DestDir: {app}\Plugins; Flags: ignoreversion onlyifdoesntexist
|
|
||||||
Source: Sprites\*; DestDir: {app}\Sprites; Flags: ignoreversion recursesubdirs
|
|
||||||
Source: Textures\*; DestDir: {app}\Textures; Flags: ignoreversion
|
|
||||||
|
|
||||||
[Icons]
|
|
||||||
Name: {group}\Ultimate Doom Builder; Filename: {app}\Builder.exe
|
|
||||||
Name: {group}\{cm:UninstallProgram,Ultimate Doom Builder}; Filename: {uninstallexe}
|
|
||||||
Name: {commondesktop}\Ultimate Doom Builder; Filename: {app}\Builder.exe; Tasks: desktopicon
|
|
||||||
|
|
||||||
[UninstallDelete]
|
|
||||||
Name: {app}; Type: filesandordirs
|
|
||||||
|
|
||||||
[InstallDelete]
|
|
||||||
Name: {app}\Builder.pdb; Type: files
|
|
||||||
Name: {app}\Builder.xml; Type: files
|
|
||||||
|
|
||||||
[Registry]
|
|
||||||
Root: HKLM; Subkey: SOFTWARE\UDB\Ultimate Doom Builder\; ValueType: string; ValueName: Location; ValueData: {app}; Flags: uninsdeletevalue
|
|
||||||
|
|
||||||
[Messages]
|
|
||||||
ReadyLabel2a=Continue to begin with the installation, or click Back if you want to review or change any settings.
|
|
||||||
|
|
||||||
[Code]
|
|
||||||
// Global variables
|
|
||||||
var
|
|
||||||
page_info_net: TOutputMsgWizardPage;
|
|
||||||
page_info_netfailed: TOutputMsgWizardPage;
|
|
||||||
page_setup_net: TOutputProgressWizardPage;
|
|
||||||
page_info_vc: TOutputMsgWizardPage;
|
|
||||||
page_info_vcfailed: TOutputMsgWizardPage;
|
|
||||||
page_setup_vc: TOutputProgressWizardPage;
|
|
||||||
restartneeded: Boolean;
|
|
||||||
netinstallfailed: Boolean;
|
|
||||||
netisinstalled: Boolean;
|
|
||||||
vcinstallfailed: Boolean;
|
|
||||||
vcisinstalled: Boolean;
|
|
||||||
|
|
||||||
// Prerequisites checks
|
|
||||||
function CheckNetIsInstalled(): Boolean;
|
|
||||||
begin
|
|
||||||
Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5') or
|
|
||||||
RegKeyExists(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5');
|
|
||||||
end;
|
|
||||||
|
|
||||||
function CheckVCIsInstalled(): Boolean;
|
|
||||||
begin
|
|
||||||
//mxd. Any VC++ 2008 package will do, I assume...
|
|
||||||
//mxd. Registry values gartered from http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx
|
|
||||||
Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}') or
|
|
||||||
RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A25302D-30C0-39D9-BD6F-21E6EC160475}') or
|
|
||||||
RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}');
|
|
||||||
end;
|
|
||||||
|
|
||||||
// When the wizard initializes
|
|
||||||
procedure InitializeWizard();
|
|
||||||
begin
|
|
||||||
restartneeded := false;
|
|
||||||
netinstallfailed := false;
|
|
||||||
netisinstalled := CheckNetIsInstalled();
|
|
||||||
vcinstallfailed := false;
|
|
||||||
vcisinstalled := CheckVCIsInstalled();
|
|
||||||
|
|
||||||
// Create .NET Framework pages
|
|
||||||
page_info_net := CreateOutputMsgPage(wpPreparing,
|
|
||||||
'Installing Microsoft .NET Framework 3.5', '',
|
|
||||||
'Setup has detected that your system is missing the required version of the Microsoft .NET Framework. ' +
|
|
||||||
'Setup will now install or update your Microsoft .NET Framework. This may take several minutes to complete.' + #10 + #10 +
|
|
||||||
'WARNING: The installer will download the Microsoft .NET Framework from the internet, but the progress bar will not ' +
|
|
||||||
'go forward until the download is complete. You may send Microsoft an angry letter about that.' + #10 + #10 +
|
|
||||||
'Click Install to begin.');
|
|
||||||
|
|
||||||
page_info_netfailed := CreateOutputMsgPage(page_info_net.ID,
|
|
||||||
'Installing Microsoft .NET Framework 3.5', '',
|
|
||||||
'Setup could not install the Microsoft .NET Framework 3.5.' + #10 + #10 +
|
|
||||||
'Click Back to try again, or Cancel to exit Setup.');
|
|
||||||
|
|
||||||
page_setup_net := CreateOutputProgressPage('Installing Microsoft .NET Framework 3.5', 'Setup is installing Microsoft .NET Framework 3.5, please wait...');
|
|
||||||
|
|
||||||
// Create VC++ 2008 pages
|
|
||||||
page_info_vc := CreateOutputMsgPage(wpPreparing,
|
|
||||||
'Installing Visual C++ 2008 SP1 ATL Security Update', '',
|
|
||||||
'Setup has detected that your system is missing the required version of the Visual C++ Runtime. ' +
|
|
||||||
'Setup will now install or update your Visual C++ Runtime. This may take several minutes to complete.' + #10 + #10 +
|
|
||||||
'Click Install to begin.');
|
|
||||||
|
|
||||||
page_info_vcfailed := CreateOutputMsgPage(page_info_net.ID,
|
|
||||||
'Installing Visual C++ 2008 SP1 ATL Security Update', '',
|
|
||||||
'Setup could not install Visual C++ 2008 SP1 ATL Security Update.' + #10 + #10 +
|
|
||||||
'Click Back to try again, or Cancel to exit Setup.');
|
|
||||||
|
|
||||||
page_setup_vc := CreateOutputProgressPage('Installing Visual C++ 2008 SP1 ATL Security Update', 'Setup is installing Visual C++ 2008 SP1 ATL Security Update, please wait...');
|
|
||||||
end;
|
|
||||||
|
|
||||||
// This is called to check if a page must be skipped
|
|
||||||
function ShouldSkipPage(PageID: Integer): Boolean;
|
|
||||||
begin
|
|
||||||
if(PageID = page_info_net.ID) then // Skip .NET pages?
|
|
||||||
Result := netisinstalled
|
|
||||||
else if(PageID = page_info_netfailed.ID) then
|
|
||||||
Result := (not netinstallfailed) and netisinstalled
|
|
||||||
else if(PageID = page_info_vc.ID) then // Skip VC++ pages?
|
|
||||||
Result := vcisinstalled
|
|
||||||
else if(PageID = page_info_vcfailed.ID) then
|
|
||||||
Result := (not vcinstallfailed) and vcisinstalled
|
|
||||||
else
|
|
||||||
Result := false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// This is called to determine if we need to restart
|
|
||||||
function NeedRestart(): Boolean;
|
|
||||||
begin
|
|
||||||
Result := restartneeded;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// This is called when the current page changes
|
|
||||||
procedure CurPageChanged(CurPageID: Integer);
|
|
||||||
begin
|
|
||||||
if(CurPageID = wpReady) then begin
|
|
||||||
if(netisinstalled = false) or (vcisinstalled = false) then
|
|
||||||
WizardForm.NextButton.Caption := 'Next';
|
|
||||||
end
|
|
||||||
else if(CurPageID = page_info_net.ID) or (CurPageID = page_info_vc.ID) then begin
|
|
||||||
WizardForm.NextButton.Caption := 'Install';
|
|
||||||
end
|
|
||||||
else if(CurPageID = page_info_netfailed.ID) or (CurPageID = page_info_vcfailed.ID) then begin
|
|
||||||
WizardForm.NextButton.Visible := true;
|
|
||||||
WizardForm.NextButton.Enabled := false;
|
|
||||||
WizardForm.BackButton.Visible := true;
|
|
||||||
WizardForm.BackButton.Enabled := true;
|
|
||||||
WizardForm.CancelButton.Visible := true;
|
|
||||||
WizardForm.CancelButton.Enabled := true;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// This is called when the Next button is clicked
|
|
||||||
function NextButtonClick(CurPage: Integer): Boolean;
|
|
||||||
var
|
|
||||||
errorcode: Integer;
|
|
||||||
tempfile: String;
|
|
||||||
begin
|
|
||||||
|
|
||||||
// Next pressed on .NET info page?
|
|
||||||
if(CurPage = page_info_net.ID) then begin
|
|
||||||
// Show progress page and run setup
|
|
||||||
page_setup_net.Show;
|
|
||||||
try
|
|
||||||
begin
|
|
||||||
netinstallfailed := false;
|
|
||||||
ExtractTemporaryFile('dotnetfx35setup.exe');
|
|
||||||
// We copy the file to the real temp directory so that it isn't removed when Setup is closed.
|
|
||||||
// Judging from the return codes, this installer may want to run again after a reboot.
|
|
||||||
// See the return codes here: http://msdn.microsoft.com/en-us/library/cc160716.aspx
|
|
||||||
tempfile := RemoveBackslash(GetTempDir()) + '\dotnetfx35setup.exe';
|
|
||||||
FileCopy(ExpandConstant('{tmp}\dotnetfx35setup.exe'), tempfile, false);
|
|
||||||
Exec(tempfile, '/qb /norestart', '', SW_SHOW, ewWaitUntilTerminated, errorcode);
|
|
||||||
|
|
||||||
if((errorcode = 1641) or (errorcode = 3010)) then begin
|
|
||||||
// Success, but restart needed!
|
|
||||||
restartneeded := true;
|
|
||||||
end
|
|
||||||
else if(errorcode <> 0) then begin
|
|
||||||
netinstallfailed := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
netisinstalled := CheckNetIsInstalled();
|
|
||||||
end
|
|
||||||
finally
|
|
||||||
page_setup_net.Hide;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
// Next pressed on VC info page?
|
|
||||||
else if(CurPage = page_info_vc.ID) then begin
|
|
||||||
// Show progress page and run setup
|
|
||||||
page_setup_vc.Show;
|
|
||||||
try
|
|
||||||
begin
|
|
||||||
vcinstallfailed := false;
|
|
||||||
ExtractTemporaryFile('vcredist_x86.exe');
|
|
||||||
// We copy the file to the real temp directory so that it isn't removed when Setup is closed.
|
|
||||||
// Judging from the return codes, this installer may want to run again after a reboot.
|
|
||||||
// See the return codes here: http://blogs.msdn.com/b/astebner/archive/2010/10/20/10078468.aspx
|
|
||||||
tempfile := RemoveBackslash(GetTempDir()) + '\vcredist_x86.exe';
|
|
||||||
FileCopy(ExpandConstant('{tmp}\vcredist_x86.exe'), tempfile, false);
|
|
||||||
Exec(tempfile, '/q /norestart', '', SW_SHOW, ewWaitUntilTerminated, errorcode);
|
|
||||||
|
|
||||||
if(errorcode = 3010) then begin
|
|
||||||
// Success, but restart needed!
|
|
||||||
restartneeded := true;
|
|
||||||
end
|
|
||||||
else if(errorcode <> 0) then begin
|
|
||||||
vcinstallfailed := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
vcisinstalled := CheckVCIsInstalled();
|
|
||||||
end
|
|
||||||
finally
|
|
||||||
page_setup_vc.Hide;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Result := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
//Remove configs?
|
|
||||||
procedure DeinitializeUninstall();
|
|
||||||
begin
|
|
||||||
if MsgBox('Delete map restore data and program configuration files?', mbConfirmation, MB_YESNO) = IDYES then
|
|
||||||
begin
|
|
||||||
// Remove restore data
|
|
||||||
DelTree(ExpandConstant('{localappdata}\Doom Builder\Restore'), True, True, True);
|
|
||||||
|
|
||||||
// Remove configs
|
|
||||||
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZBuilder.cfg'));
|
|
||||||
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZBuilder.log'));
|
|
||||||
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZCrash.txt'));
|
|
||||||
end;
|
|
||||||
end;
|
|
|
@ -132,13 +132,13 @@ IF NOT DEFINED BUILD_RELEASE GOTO PACKGIT
|
||||||
|
|
||||||
set DEL_PATHSPEC="%DB_OUTDIR%\UltimateDoomBuilder-Setup*-%PLATFORM%.exe"
|
set DEL_PATHSPEC="%DB_OUTDIR%\UltimateDoomBuilder-Setup*-%PLATFORM%.exe"
|
||||||
IF EXIST %DEL_PATHSPEC% DEL /F /Q %DEL_PATHSPEC% > NUL
|
IF EXIST %DEL_PATHSPEC% DEL /F /Q %DEL_PATHSPEC% > NUL
|
||||||
"%ISSDIR%\iscc.exe" "Setup\gzbuilder_setup.iss"
|
"%ISSDIR%\iscc.exe" /DUDB_arch=%PLATFORM% "Setup\UDBuilder_setup.iss"
|
||||||
IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL
|
IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL
|
||||||
IF NOT EXIST "%DB_OUTDIR%\Setup.exe" GOTO FILEFAIL
|
IF NOT EXIST "%DB_OUTDIR%\Setup.exe" GOTO FILEFAIL
|
||||||
|
|
||||||
REN "%DB_OUTDIR%\Setup.exe" "UltimateDoomBuilder-Setup-R%REVISIONNUMBER%-%PLATFORM%.exe"
|
REN "%DB_OUTDIR%\Setup.exe" "UltimateDoomBuilder-Setup-R%REVISIONNUMBER%-%PLATFORM%.exe"
|
||||||
|
|
||||||
GOTO BUILDDONE
|
REM GOTO BUILDDONE
|
||||||
|
|
||||||
:PACKGIT
|
:PACKGIT
|
||||||
SET DEL_PATHSPEC="%DB_OUTDIR%\UltimateDoomBuilder*-%PLATFORM%.7z"
|
SET DEL_PATHSPEC="%DB_OUTDIR%\UltimateDoomBuilder*-%PLATFORM%.7z"
|
||||||
|
|
Loading…
Reference in a new issue