; 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;