RestaurantAppSetup.iss 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. ; Build the project before compiling this script.
  2. ; Preferred layout:
  3. ; bin\Release\RestaurantApp.exe
  4. ; Optional .NET Framework 4.7.2 redistributable:
  5. ; redist\NDP472-KB4054530-x86-x64-AllOS-ENU.exe
  6. #define AppName "RestaurantApp"
  7. #define AppVersion "1.0.0"
  8. #define AppPublisher "RestaurantApp"
  9. #define AppExeName "RestaurantApp.exe"
  10. #define DotNetRedist "redist\\NDP472-KB4054530-x86-x64-AllOS-ENU.exe"
  11. #ifexist "bin\Release\RestaurantApp.exe"
  12. #define BuildDir "bin\\Release"
  13. #else
  14. #define BuildDir "bin\\Debug"
  15. #endif
  16. #ifexist DotNetRedist
  17. #define HasDotNetRedist
  18. #endif
  19. [Setup]
  20. AppId={{A7A8807E-9A78-44D1-B879-B0C1EF78C6C1}
  21. AppName={#AppName}
  22. AppVersion={#AppVersion}
  23. AppPublisher={#AppPublisher}
  24. DefaultDirName={autopf}\{#AppName}
  25. DefaultGroupName={#AppName}
  26. DisableProgramGroupPage=yes
  27. PrivilegesRequired=admin
  28. OutputDir=installer-output
  29. OutputBaseFilename=RestaurantAppSetup
  30. Compression=lzma
  31. SolidCompression=yes
  32. WizardStyle=modern
  33. UninstallDisplayIcon={app}\{#AppExeName}
  34. [Languages]
  35. Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
  36. [Tasks]
  37. Name: "desktopicon"; Description: "Create a desktop shortcut"; GroupDescription: "Additional shortcuts:"
  38. [Files]
  39. Source: "{#BuildDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: "*.pdb,*.xml,*.vshost.*"
  40. #ifdef HasDotNetRedist
  41. Source: "{#DotNetRedist}"; DestDir: "{tmp}"; Flags: deleteafterinstall
  42. #endif
  43. [Icons]
  44. Name: "{autoprograms}\{#AppName}"; Filename: "{app}\{#AppExeName}"
  45. Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desktopicon
  46. [Run]
  47. #ifdef HasDotNetRedist
  48. Filename: "{tmp}\NDP472-KB4054530-x86-x64-AllOS-ENU.exe"; Parameters: "/passive /norestart"; StatusMsg: "Installing .NET Framework 4.7.2..."; Flags: waituntilterminated; Check: NeedsDotNet472
  49. #endif
  50. Filename: "{app}\{#AppExeName}"; Description: "Launch {#AppName}"; Flags: nowait postinstall skipifsilent; Check: IsDotNet472Installed
  51. [Code]
  52. function GetDotNetRelease(): Cardinal;
  53. var
  54. Release: Cardinal;
  55. begin
  56. Result := 0;
  57. if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
  58. begin
  59. Result := Release;
  60. exit;
  61. end;
  62. if IsWin64 and RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
  63. begin
  64. Result := Release;
  65. exit;
  66. end;
  67. if RegQueryDWordValue(HKLM32, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Release) then
  68. begin
  69. Result := Release;
  70. end;
  71. end;
  72. function IsDotNet472Installed(): Boolean;
  73. begin
  74. Result := GetDotNetRelease() >= 461808;
  75. end;
  76. function NeedsDotNet472(): Boolean;
  77. begin
  78. Result := not IsDotNet472Installed();
  79. end;
  80. function InitializeSetup(): Boolean;
  81. begin
  82. Result := True;
  83. if IsDotNet472Installed() then
  84. exit;
  85. #ifdef HasDotNetRedist
  86. MsgBox(
  87. '.NET Framework 4.7.2 was not found. The installer will install it before the first launch.',
  88. mbInformation,
  89. MB_OK
  90. );
  91. #else
  92. MsgBox(
  93. '.NET Framework 4.7.2 or newer is required.' + #13#10 + #13#10 +
  94. 'Place the offline installer in redist\\NDP472-KB4054530-x86-x64-AllOS-ENU.exe and rebuild setup, or install .NET manually before running setup.',
  95. mbCriticalError,
  96. MB_OK
  97. );
  98. Result := False;
  99. #endif
  100. end;