| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- ; Build the project before compiling this script.
- ; Preferred layout:
- ; bin\Release\RestaurantApp.exe
- ; Optional .NET Framework 4.7.2 redistributable:
- ; redist\NDP472-KB4054530-x86-x64-AllOS-ENU.exe
- #define AppName "RestaurantApp"
- #define AppVersion "1.0.0"
- #define AppPublisher "RestaurantApp"
- #define AppExeName "RestaurantApp.exe"
- #define DotNetRedist "redist\\NDP472-KB4054530-x86-x64-AllOS-ENU.exe"
- #ifexist "bin\Release\RestaurantApp.exe"
- #define BuildDir "bin\\Release"
- #else
- #define BuildDir "bin\\Debug"
- #endif
- #ifexist DotNetRedist
- #define HasDotNetRedist
- #endif
- [Setup]
- AppId={{A7A8807E-9A78-44D1-B879-B0C1EF78C6C1}
- AppName={#AppName}
- AppVersion={#AppVersion}
- AppPublisher={#AppPublisher}
- DefaultDirName={autopf}\{#AppName}
- DefaultGroupName={#AppName}
- DisableProgramGroupPage=yes
- PrivilegesRequired=admin
- OutputDir=installer-output
- OutputBaseFilename=RestaurantAppSetup
- Compression=lzma
- SolidCompression=yes
- WizardStyle=modern
- UninstallDisplayIcon={app}\{#AppExeName}
- [Languages]
- Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
- [Tasks]
- Name: "desktopicon"; Description: "Create a desktop shortcut"; GroupDescription: "Additional shortcuts:"
- [Files]
- Source: "{#BuildDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: "*.pdb,*.xml,*.vshost.*"
- #ifdef HasDotNetRedist
- Source: "{#DotNetRedist}"; DestDir: "{tmp}"; Flags: deleteafterinstall
- #endif
- [Icons]
- Name: "{autoprograms}\{#AppName}"; Filename: "{app}\{#AppExeName}"
- Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desktopicon
- [Run]
- #ifdef HasDotNetRedist
- Filename: "{tmp}\NDP472-KB4054530-x86-x64-AllOS-ENU.exe"; Parameters: "/passive /norestart"; StatusMsg: "Installing .NET Framework 4.7.2..."; Flags: waituntilterminated; Check: NeedsDotNet472
- #endif
- Filename: "{app}\{#AppExeName}"; Description: "Launch {#AppName}"; Flags: nowait postinstall skipifsilent; Check: IsDotNet472Installed
- [Code]
- function GetDotNetRelease(): Cardinal;
- var
- Release: Cardinal;
- begin
- Result := 0;
- if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
- begin
- Result := Release;
- exit;
- end;
- if IsWin64 and RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
- begin
- Result := Release;
- exit;
- end;
- if RegQueryDWordValue(HKLM32, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
- begin
- Result := Release;
- end;
- end;
- function IsDotNet472Installed(): Boolean;
- begin
- Result := GetDotNetRelease() >= 461808;
- end;
- function NeedsDotNet472(): Boolean;
- begin
- Result := not IsDotNet472Installed();
- end;
- function InitializeSetup(): Boolean;
- begin
- Result := True;
- if IsDotNet472Installed() then
- exit;
- #ifdef HasDotNetRedist
- MsgBox(
- '.NET Framework 4.7.2 was not found. The installer will install it before the first launch.',
- mbInformation,
- MB_OK
- );
- #else
- MsgBox(
- '.NET Framework 4.7.2 or newer is required.' + #13#10 + #13#10 +
- 'Place the offline installer in redist\\NDP472-KB4054530-x86-x64-AllOS-ENU.exe and rebuild setup, or install .NET manually before running setup.',
- mbCriticalError,
- MB_OK
- );
- Result := False;
- #endif
- end;
|