CodeDependencies.iss 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. [Code]
  2. // https://github.com/DomGries/InnoDependencyInstaller
  3. // types and variables
  4. type
  5. TDependency_Entry = record
  6. Filename: String;
  7. Parameters: String;
  8. Title: String;
  9. URL: String;
  10. Checksum: String;
  11. ForceSuccess: Boolean;
  12. RestartAfter: Boolean;
  13. end;
  14. var
  15. Dependency_Memo: String;
  16. Dependency_List: array of TDependency_Entry;
  17. Dependency_NeedToRestart, Dependency_ForceX86: Boolean;
  18. Dependency_DownloadPage: TDownloadWizardPage;
  19. procedure Dependency_Add(const Filename, Parameters, Title, URL, Checksum: String; const ForceSuccess, RestartAfter: Boolean);
  20. var
  21. Dependency: TDependency_Entry;
  22. DependencyCount: Integer;
  23. begin
  24. Dependency_Memo := Dependency_Memo + #13#10 + '%1' + Title;
  25. Dependency.Filename := Filename;
  26. Dependency.Parameters := Parameters;
  27. Dependency.Title := Title;
  28. if FileExists(ExpandConstant('{tmp}{\}') + Filename) then begin
  29. Dependency.URL := '';
  30. end else begin
  31. Dependency.URL := URL;
  32. end;
  33. Dependency.Checksum := Checksum;
  34. Dependency.ForceSuccess := ForceSuccess;
  35. Dependency.RestartAfter := RestartAfter;
  36. DependencyCount := GetArrayLength(Dependency_List);
  37. SetArrayLength(Dependency_List, DependencyCount + 1);
  38. Dependency_List[DependencyCount] := Dependency;
  39. end;
  40. <event('InitializeWizard')>
  41. procedure Dependency_InitializeWizard;
  42. begin
  43. Dependency_DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);
  44. end;
  45. <event('PrepareToInstall')>
  46. function Dependency_PrepareToInstall(var NeedsRestart: Boolean): String;
  47. var
  48. DependencyCount, DependencyIndex, ResultCode: Integer;
  49. Retry: Boolean;
  50. TempValue: String;
  51. begin
  52. DependencyCount := GetArrayLength(Dependency_List);
  53. if DependencyCount > 0 then begin
  54. Dependency_DownloadPage.Show;
  55. for DependencyIndex := 0 to DependencyCount - 1 do begin
  56. if Dependency_List[DependencyIndex].URL <> '' then begin
  57. Dependency_DownloadPage.Clear;
  58. Dependency_DownloadPage.Add(Dependency_List[DependencyIndex].URL, Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Checksum);
  59. Retry := True;
  60. while Retry do begin
  61. Retry := False;
  62. try
  63. Dependency_DownloadPage.Download;
  64. except
  65. if Dependency_DownloadPage.AbortedByUser then begin
  66. Result := Dependency_List[DependencyIndex].Title;
  67. DependencyIndex := DependencyCount;
  68. end else begin
  69. case SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of
  70. IDABORT: begin
  71. Result := Dependency_List[DependencyIndex].Title;
  72. DependencyIndex := DependencyCount;
  73. end;
  74. IDRETRY: begin
  75. Retry := True;
  76. end;
  77. end;
  78. end;
  79. end;
  80. end;
  81. end;
  82. end;
  83. if Result = '' then begin
  84. for DependencyIndex := 0 to DependencyCount - 1 do begin
  85. Dependency_DownloadPage.SetText(Dependency_List[DependencyIndex].Title, '');
  86. Dependency_DownloadPage.SetProgress(DependencyIndex + 1, DependencyCount + 1);
  87. while True do begin
  88. ResultCode := 0;
  89. #ifdef Dependency_CustomExecute
  90. if {#Dependency_CustomExecute}(ExpandConstant('{tmp}{\}') + Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Parameters, ResultCode) then begin
  91. #else
  92. if ShellExec('', ExpandConstant('{tmp}{\}') + Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then begin
  93. #endif
  94. if Dependency_List[DependencyIndex].RestartAfter then begin
  95. if DependencyIndex = DependencyCount - 1 then begin
  96. Dependency_NeedToRestart := True;
  97. end else begin
  98. NeedsRestart := True;
  99. Result := Dependency_List[DependencyIndex].Title;
  100. end;
  101. break;
  102. end else if (ResultCode = 0) or Dependency_List[DependencyIndex].ForceSuccess then begin // ERROR_SUCCESS (0)
  103. break;
  104. end else if ResultCode = 1641 then begin // ERROR_SUCCESS_REBOOT_INITIATED (1641)
  105. NeedsRestart := True;
  106. Result := Dependency_List[DependencyIndex].Title;
  107. break;
  108. end else if ResultCode = 3010 then begin // ERROR_SUCCESS_REBOOT_REQUIRED (3010)
  109. Dependency_NeedToRestart := True;
  110. break;
  111. end;
  112. end;
  113. case SuppressibleMsgBox(FmtMessage(SetupMessage(msgErrorFunctionFailed), [Dependency_List[DependencyIndex].Title, IntToStr(ResultCode)]), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of
  114. IDABORT: begin
  115. Result := Dependency_List[DependencyIndex].Title;
  116. break;
  117. end;
  118. IDIGNORE: begin
  119. break;
  120. end;
  121. end;
  122. end;
  123. if Result <> '' then begin
  124. break;
  125. end;
  126. end;
  127. if NeedsRestart then begin
  128. TempValue := '"' + ExpandConstant('{srcexe}') + '" /restart=1 /LANG="' + ExpandConstant('{language}') + '" /DIR="' + WizardDirValue + '" /GROUP="' + WizardGroupValue + '" /TYPE="' + WizardSetupType(False) + '" /COMPONENTS="' + WizardSelectedComponents(False) + '" /TASKS="' + WizardSelectedTasks(False) + '"';
  129. if WizardNoIcons then begin
  130. TempValue := TempValue + ' /NOICONS';
  131. end;
  132. RegWriteStringValue(HKA, 'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce', '{#SetupSetting("AppName")}', TempValue);
  133. end;
  134. end;
  135. Dependency_DownloadPage.Hide;
  136. end;
  137. end;
  138. #ifndef Dependency_NoUpdateReadyMemo
  139. <event('UpdateReadyMemo')>
  140. #endif
  141. function Dependency_UpdateReadyMemo(const Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
  142. begin
  143. Result := '';
  144. if MemoUserInfoInfo <> '' then begin
  145. Result := Result + MemoUserInfoInfo + Newline + NewLine;
  146. end;
  147. if MemoDirInfo <> '' then begin
  148. Result := Result + MemoDirInfo + Newline + NewLine;
  149. end;
  150. if MemoTypeInfo <> '' then begin
  151. Result := Result + MemoTypeInfo + Newline + NewLine;
  152. end;
  153. if MemoComponentsInfo <> '' then begin
  154. Result := Result + MemoComponentsInfo + Newline + NewLine;
  155. end;
  156. if MemoGroupInfo <> '' then begin
  157. Result := Result + MemoGroupInfo + Newline + NewLine;
  158. end;
  159. if MemoTasksInfo <> '' then begin
  160. Result := Result + MemoTasksInfo;
  161. end;
  162. if Dependency_Memo <> '' then begin
  163. if MemoTasksInfo = '' then begin
  164. Result := Result + SetupMessage(msgReadyMemoTasks);
  165. end;
  166. Result := Result + FmtMessage(Dependency_Memo, [Space]);
  167. end;
  168. end;
  169. <event('NeedRestart')>
  170. function Dependency_NeedRestart: Boolean;
  171. begin
  172. Result := Dependency_NeedToRestart;
  173. end;
  174. function Dependency_IsX64: Boolean;
  175. begin
  176. Result := not Dependency_ForceX86 and Is64BitInstallMode;
  177. end;
  178. function Dependency_String(const x86, x64: String): String;
  179. begin
  180. if Dependency_IsX64 then begin
  181. Result := x64;
  182. end else begin
  183. Result := x86;
  184. end;
  185. end;
  186. function Dependency_ArchSuffix: String;
  187. begin
  188. Result := Dependency_String('', '_x64');
  189. end;
  190. function Dependency_ArchTitle: String;
  191. begin
  192. Result := Dependency_String(' (x86)', ' (x64)');
  193. end;
  194. function Dependency_IsNetCoreInstalled(const Version: String): Boolean;
  195. var
  196. ResultCode: Integer;
  197. begin
  198. // source code: https://github.com/dotnet/deployment-tools/tree/main/src/clickonce/native/projects/NetCoreCheck
  199. if not FileExists(ExpandConstant('{tmp}{\}') + 'netcorecheck' + Dependency_ArchSuffix + '.exe') then begin
  200. ExtractTemporaryFile('netcorecheck' + Dependency_ArchSuffix + '.exe');
  201. end;
  202. Result := ShellExec('', ExpandConstant('{tmp}{\}') + 'netcorecheck' + Dependency_ArchSuffix + '.exe', Version, '', SW_HIDE, ewWaitUntilTerminated, ResultCode) and (ResultCode = 0);
  203. end;
  204. procedure Dependency_AddDotNet35;
  205. begin
  206. // https://dotnet.microsoft.com/download/dotnet-framework/net35-sp1
  207. if not IsDotNetInstalled(net35, 1) then begin
  208. Dependency_Add('dotnetfx35.exe',
  209. '/lang:enu /passive /norestart',
  210. '.NET Framework 3.5 Service Pack 1',
  211. 'https://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe',
  212. '', False, False);
  213. end;
  214. end;
  215. procedure Dependency_AddDotNet40;
  216. begin
  217. // https://dotnet.microsoft.com/download/dotnet-framework/net40
  218. if not IsDotNetInstalled(net4full, 0) then begin
  219. Dependency_Add('dotNetFx40_Full_setup.exe',
  220. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  221. '.NET Framework 4.0',
  222. 'https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe',
  223. '', False, False);
  224. end;
  225. end;
  226. procedure Dependency_AddDotNet45;
  227. begin
  228. // https://dotnet.microsoft.com/download/dotnet-framework/net452
  229. if not IsDotNetInstalled(net452, 0) then begin
  230. Dependency_Add('dotnetfx45.exe',
  231. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  232. '.NET Framework 4.5.2',
  233. 'https://go.microsoft.com/fwlink/?LinkId=397707',
  234. '', False, False);
  235. end;
  236. end;
  237. procedure Dependency_AddDotNet46;
  238. begin
  239. // https://dotnet.microsoft.com/download/dotnet-framework/net462
  240. if not IsDotNetInstalled(net462, 0) then begin
  241. Dependency_Add('dotnetfx46.exe',
  242. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  243. '.NET Framework 4.6.2',
  244. 'https://go.microsoft.com/fwlink/?linkid=780596',
  245. '', False, False);
  246. end;
  247. end;
  248. procedure Dependency_AddDotNet47;
  249. begin
  250. // https://dotnet.microsoft.com/download/dotnet-framework/net472
  251. if not IsDotNetInstalled(net472, 0) then begin
  252. Dependency_Add('dotnetfx47.exe',
  253. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  254. '.NET Framework 4.7.2',
  255. 'https://go.microsoft.com/fwlink/?LinkId=863262',
  256. '', False, False);
  257. end;
  258. end;
  259. procedure Dependency_AddDotNet48;
  260. begin
  261. // https://dotnet.microsoft.com/download/dotnet-framework/net48
  262. if not IsDotNetInstalled(net48, 0) then begin
  263. Dependency_Add('dotnetfx48.exe',
  264. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  265. '.NET Framework 4.8',
  266. 'https://go.microsoft.com/fwlink/?LinkId=2085155',
  267. '', False, False);
  268. end;
  269. end;
  270. procedure Dependency_AddDotNet481;
  271. var
  272. Version: Cardinal;
  273. begin
  274. // https://dotnet.microsoft.com/download/dotnet-framework/net481
  275. if not RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Version) or (Version < 533320) then begin
  276. Dependency_Add('dotnetfx481.exe',
  277. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  278. '.NET Framework 4.8.1',
  279. 'https://go.microsoft.com/fwlink/?LinkId=2203304',
  280. '', False, False);
  281. end;
  282. end;
  283. procedure Dependency_AddNetCore31;
  284. begin
  285. // https://dotnet.microsoft.com/download/dotnet-core/3.1
  286. if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 3.1.32') then begin
  287. Dependency_Add('netcore31' + Dependency_ArchSuffix + '.exe',
  288. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  289. '.NET Core Runtime 3.1.32' + Dependency_ArchTitle,
  290. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/de4b3438-24a2-4d1d-a845-97355cf97b71/515abb880478b49f7c1bced8fbf07b16/dotnet-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/476eba79-f17f-49c8-a213-0f24a22cd026/37c02de81ff5b76ac57a5427462395f1/dotnet-runtime-3.1.32-win-x64.exe'),
  291. '', False, False);
  292. end;
  293. end;
  294. procedure Dependency_AddNetCore31Asp;
  295. begin
  296. // https://dotnet.microsoft.com/download/dotnet-core/3.1
  297. if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 3.1.32') then begin
  298. Dependency_Add('netcore31asp' + Dependency_ArchSuffix + '.exe',
  299. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  300. 'ASP.NET Core Runtime 3.1.32' + Dependency_ArchTitle,
  301. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/63b482d2-04b2-4dd4-baaf-d1e78de80738/40321091c872f4e77337b68fc61a5a07/aspnetcore-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/98910750-2644-472c-ab2b-17f315ccb953/c2a4c223ee11e2eec7d13744e7a45547/aspnetcore-runtime-3.1.32-win-x64.exe'),
  302. '', False, False);
  303. end;
  304. end;
  305. procedure Dependency_AddNetCore31Desktop;
  306. begin
  307. // https://dotnet.microsoft.com/download/dotnet-core/3.1
  308. if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 3.1.32') then begin
  309. Dependency_Add('netcore31desktop' + Dependency_ArchSuffix + '.exe',
  310. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  311. '.NET Desktop Runtime 3.1.32' + Dependency_ArchTitle,
  312. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/3f353d2c-0431-48c5-bdf6-fbbe8f901bb5/542a4af07c1df5136a98a1c2df6f3d62/windowsdesktop-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/b92958c6-ae36-4efa-aafe-569fced953a5/1654639ef3b20eb576174c1cc200f33a/windowsdesktop-runtime-3.1.32-win-x64.exe'),
  313. '', False, False);
  314. end;
  315. end;
  316. procedure Dependency_AddDotNet50;
  317. begin
  318. // https://dotnet.microsoft.com/download/dotnet/5.0
  319. if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 5.0.17') then begin
  320. Dependency_Add('dotnet50' + Dependency_ArchSuffix + '.exe',
  321. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  322. '.NET Runtime 5.0.17' + Dependency_ArchTitle,
  323. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/54683c13-6b04-4d7d-b4d4-1f055b50ea43/e99048e2840d57040e8312058853a5b9/dotnet-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/a0832b5a-6900-442b-af79-6ffddddd6ba4/e2df0b25dd851ee0b38a86947dd0e42e/dotnet-runtime-5.0.17-win-x64.exe'),
  324. '', False, False);
  325. end;
  326. end;
  327. procedure Dependency_AddDotNet50Asp;
  328. begin
  329. // https://dotnet.microsoft.com/download/dotnet/5.0
  330. if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 5.0.17') then begin
  331. Dependency_Add('dotnet50asp' + Dependency_ArchSuffix + '.exe',
  332. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  333. 'ASP.NET Core Runtime 5.0.17' + Dependency_ArchTitle,
  334. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4bfa247d-321d-4b29-a34b-62320849059b/8df7a17d9aad4044efe9b5b1c423e82c/aspnetcore-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3789ec90-2717-424f-8b9c-3adbbcea6c16/2085cc5ff077b8789ff938015392e406/aspnetcore-runtime-5.0.17-win-x64.exe'),
  335. '', False, False);
  336. end;
  337. end;
  338. procedure Dependency_AddDotNet50Desktop;
  339. begin
  340. // https://dotnet.microsoft.com/download/dotnet/5.0
  341. if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 5.0.17') then begin
  342. Dependency_Add('dotnet50desktop' + Dependency_ArchSuffix + '.exe',
  343. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  344. '.NET Desktop Runtime 5.0.17' + Dependency_ArchTitle,
  345. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe'),
  346. '', False, False);
  347. end;
  348. end;
  349. procedure Dependency_AddDotNet60;
  350. begin
  351. // https://dotnet.microsoft.com/download/dotnet/6.0
  352. if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 6.0.20') then begin
  353. Dependency_Add('dotnet60' + Dependency_ArchSuffix + '.exe',
  354. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  355. '.NET Runtime 6.0.20' + Dependency_ArchTitle,
  356. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/3be5ee3a-c171-4cd2-ab98-00ca5c11eb8c/6fd31294b0c6c670ab5c060592935203/dotnet-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3cfb6d2a-afbe-4ae7-8e5b-776f350654cc/6e8d858a60fe15381f3c84d8ca66c4a7/dotnet-runtime-6.0.20-win-x64.exe'),
  357. '', False, False);
  358. end;
  359. end;
  360. procedure Dependency_AddDotNet60Asp;
  361. begin
  362. // https://dotnet.microsoft.com/download/dotnet/6.0
  363. if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 6.0.20') then begin
  364. Dependency_Add('dotnet60asp' + Dependency_ArchSuffix + '.exe',
  365. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  366. 'ASP.NET Core Runtime 6.0.20' + Dependency_ArchTitle,
  367. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0e37c76c-53b4-4eea-8f5c-6ad2f8d5fe3c/88a8620329ced1aee271992a5b56d236/aspnetcore-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/be9f67fd-60af-45b1-9bca-a7bcc0e86e7e/6a750f7d7432937b3999bb4c5325062a/aspnetcore-runtime-6.0.20-win-x64.exe'),
  368. '', False, False);
  369. end;
  370. end;
  371. procedure Dependency_AddDotNet60Desktop;
  372. begin
  373. // https://dotnet.microsoft.com/download/dotnet/6.0
  374. if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 6.0.20') then begin
  375. Dependency_Add('dotnet60desktop' + Dependency_ArchSuffix + '.exe',
  376. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  377. '.NET Desktop Runtime 6.0.20' + Dependency_ArchTitle,
  378. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0413b619-3eb2-4178-a78e-8d1aafab1a01/5247f08ea3c13849b68074a2142fbf31/windowsdesktop-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/1146f414-17c7-4184-8b10-1addfa5315e4/39db5573efb029130add485566320d74/windowsdesktop-runtime-6.0.20-win-x64.exe'),
  379. '', False, False);
  380. end;
  381. end;
  382. procedure Dependency_AddDotNet70;
  383. begin
  384. // https://dotnet.microsoft.com/download/dotnet/7.0
  385. if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 7.0.9') then begin
  386. Dependency_Add('dotnet70' + Dependency_ArchSuffix + '.exe',
  387. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  388. '.NET Runtime 7.0.9' + Dependency_ArchTitle,
  389. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/305a85f5-2b0d-459b-b2ea-caf71b98d25d/805edc610efa49432e5e268bbba4eacb/dotnet-runtime-7.0.9-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/73058888-02a4-4f6d-b3cd-845531c2d7d0/a785e54b7f12046c00714b2ba759e173/dotnet-runtime-7.0.9-win-x64.exe'),
  390. '', False, False);
  391. end;
  392. end;
  393. procedure Dependency_AddDotNet70Asp;
  394. begin
  395. // https://dotnet.microsoft.com/download/dotnet/7.0
  396. if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 7.0.9') then begin
  397. Dependency_Add('dotnet70asp' + Dependency_ArchSuffix + '.exe',
  398. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  399. 'ASP.NET Core Runtime 7.0.9' + Dependency_ArchTitle,
  400. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/6ec3b357-31df-4b18-948f-4979a5b4b99f/fdeec71fc7f0f34ecfa0cb8b2b897da0/aspnetcore-runtime-7.0.9-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/edd9c9b1-0c49-4297-9197-9392b2462318/d06fedaefb256d801ce94ade76af3ad9/aspnetcore-runtime-7.0.9-win-x64.exe'),
  401. '', False, False);
  402. end;
  403. end;
  404. procedure Dependency_AddDotNet70Desktop;
  405. begin
  406. // https://dotnet.microsoft.com/download/dotnet/7.0
  407. if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 7.0.9') then begin
  408. Dependency_Add('dotnet70desktop' + Dependency_ArchSuffix + '.exe',
  409. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  410. '.NET Desktop Runtime 7.0.9' + Dependency_ArchTitle,
  411. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/139b19d0-2d39-48ce-b59a-aec437509c20/ea6a2711eec53660c3b14d78b9fb2963/windowsdesktop-runtime-7.0.9-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/7727acb3-25ca-473b-a392-75afeb33cab7/f11f0477fd2fcfbb3111881377d0c9bb/windowsdesktop-runtime-7.0.9-win-x64.exe'),
  412. '', False, False);
  413. end;
  414. end;
  415. procedure Dependency_AddDotNet80;
  416. begin
  417. // https://dotnet.microsoft.com/download/dotnet/8.0
  418. if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 8.0.3') then begin
  419. Dependency_Add('dotnet80' + Dependency_ArchSuffix + '.exe',
  420. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  421. '.NET Runtime 8.0.3' + Dependency_ArchTitle,
  422. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c8d7a77c-5647-4e38-9ed8-edf82328497d/56130e071ac13c3660b0f3a0d60914c7/dotnet-runtime-8.0.3-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/961dfc84-ea72-48a2-b3f4-b82cefc34580/6ac50b6bf244a2c5481ad705a92cf843/dotnet-runtime-8.0.3-win-x64.exe'),
  423. '', False, False);
  424. end;
  425. end;
  426. procedure Dependency_AddDotNet80Asp;
  427. begin
  428. // https://dotnet.microsoft.com/download/dotnet/8.0
  429. if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 8.0.3') then begin
  430. Dependency_Add('dotnet80asp' + Dependency_ArchSuffix + '.exe',
  431. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  432. 'ASP.NET Core Runtime 8.0.3' + Dependency_ArchTitle,
  433. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/e1efd12b-9598-4b70-ad83-496563ae3f7c/da67696e4232886f52d50bb8ecda5ab1/aspnetcore-runtime-8.0.3-win-x86.zip', 'https://download.visualstudio.microsoft.com/download/pr/e91876a9-1760-42cb-a6f4-97c57e9cca52/b433fcf4768929539f17e1908cb315bf/aspnetcore-runtime-8.0.3-win-x64.exe'),
  434. '', False, False);
  435. end;
  436. end;
  437. procedure Dependency_AddDotNet80Desktop;
  438. begin
  439. // https://dotnet.microsoft.com/download/dotnet/8.0
  440. if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 8.0.3') then begin
  441. Dependency_Add('dotnet80desktop' + Dependency_ArchSuffix + '.exe',
  442. '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',
  443. '.NET Desktop Runtime 8.0.3' + Dependency_ArchTitle,
  444. Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c629f243-5125-4751-a5ff-e78fa45646b1/85777e3e3f58f863d884fd4b8a1453f2/windowsdesktop-runtime-8.0.3-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/51bc18ac-0594-412d-bd63-18ece4c91ac4/90b47b97c3bfe40a833791b166697e67/windowsdesktop-runtime-8.0.3-win-x64.exe'),
  445. '', False, False);
  446. end;
  447. end;
  448. procedure Dependency_AddVC2005;
  449. begin
  450. // https://www.microsoft.com/en-us/download/details.aspx?id=26347
  451. if not IsMsiProductInstalled(Dependency_String('{86C9D5AA-F00C-4921-B3F2-C60AF92E2844}', '{A8D19029-8E5C-4E22-8011-48070F9E796E}'), PackVersionComponents(8, 0, 61000, 0)) then begin
  452. Dependency_Add('vcredist2005' + Dependency_ArchSuffix + '.exe',
  453. '/q',
  454. 'Visual C++ 2005 Service Pack 1 Redistributable' + Dependency_ArchTitle,
  455. 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'),
  456. '', False, False);
  457. end;
  458. end;
  459. procedure Dependency_AddVC2008;
  460. begin
  461. // https://www.microsoft.com/en-us/download/details.aspx?id=26368
  462. if not IsMsiProductInstalled(Dependency_String('{DE2C306F-A067-38EF-B86C-03DE4B0312F9}', '{FDA45DDF-8E17-336F-A3ED-356B7B7C688A}'), PackVersionComponents(9, 0, 30729, 6161)) then begin
  463. Dependency_Add('vcredist2008' + Dependency_ArchSuffix + '.exe',
  464. '/q',
  465. 'Visual C++ 2008 Service Pack 1 Redistributable' + Dependency_ArchTitle,
  466. 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'),
  467. '', False, False);
  468. end;
  469. end;
  470. procedure Dependency_AddVC2010;
  471. begin
  472. // https://www.microsoft.com/en-us/download/details.aspx?id=26999
  473. if not IsMsiProductInstalled(Dependency_String('{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}', '{5B75F761-BAC8-33BC-A381-464DDDD813A3}'), PackVersionComponents(10, 0, 40219, 0)) then begin
  474. Dependency_Add('vcredist2010' + Dependency_ArchSuffix + '.exe',
  475. '/passive /norestart',
  476. 'Visual C++ 2010 Service Pack 1 Redistributable' + Dependency_ArchTitle,
  477. 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'),
  478. '', False, False);
  479. end;
  480. end;
  481. procedure Dependency_AddVC2012;
  482. begin
  483. // https://www.microsoft.com/en-us/download/details.aspx?id=30679
  484. if not IsMsiProductInstalled(Dependency_String('{4121ED58-4BD9-3E7B-A8B5-9F8BAAE045B7}', '{EFA6AFA1-738E-3E00-8101-FD03B86B29D1}'), PackVersionComponents(11, 0, 61030, 0)) then begin
  485. Dependency_Add('vcredist2012' + Dependency_ArchSuffix + '.exe',
  486. '/passive /norestart',
  487. 'Visual C++ 2012 Update 4 Redistributable' + Dependency_ArchTitle,
  488. 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'),
  489. '', False, False);
  490. end;
  491. end;
  492. procedure Dependency_AddVC2013;
  493. begin
  494. // https://support.microsoft.com/en-us/help/4032938
  495. if not IsMsiProductInstalled(Dependency_String('{B59F5BF1-67C8-3802-8E59-2CE551A39FC5}', '{20400CF0-DE7C-327E-9AE4-F0F38D9085F8}'), PackVersionComponents(12, 0, 40664, 0)) then begin
  496. Dependency_Add('vcredist2013' + Dependency_ArchSuffix + '.exe',
  497. '/passive /norestart',
  498. 'Visual C++ 2013 Update 5 Redistributable' + Dependency_ArchTitle,
  499. 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'),
  500. '', False, False);
  501. end;
  502. end;
  503. procedure Dependency_AddVC2015To2022;
  504. begin
  505. // https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist
  506. if not IsMsiProductInstalled(Dependency_String('{65E5BD06-6392-3027-8C26-853107D3CF1A}', '{36F68A90-239C-34DF-B58C-64B30153CE35}'), PackVersionComponents(14, 30, 30704, 0)) then begin
  507. Dependency_Add('vcredist2022' + Dependency_ArchSuffix + '.exe',
  508. '/passive /norestart',
  509. 'Visual C++ 2015-2022 Redistributable' + Dependency_ArchTitle,
  510. Dependency_String('https://aka.ms/vs/17/release/vc_redist.x86.exe', 'https://aka.ms/vs/17/release/vc_redist.x64.exe'),
  511. '', False, False);
  512. end;
  513. end;
  514. procedure Dependency_AddDirectX;
  515. begin
  516. #ifdef Dependency_Files_DirectX
  517. ExtractTemporaryFile('dxwebsetup.exe');
  518. #endif
  519. // https://www.microsoft.com/en-us/download/details.aspx?id=35
  520. Dependency_Add('dxwebsetup.exe',
  521. '/q',
  522. 'DirectX Runtime',
  523. 'https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe',
  524. '', True, False);
  525. end;
  526. procedure Dependency_AddSql2008Express;
  527. var
  528. Version: String;
  529. PackedVersion: Int64;
  530. begin
  531. // https://www.microsoft.com/en-us/download/details.aspx?id=30438
  532. 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
  533. Dependency_Add('sql2008express' + Dependency_ArchSuffix + '.exe',
  534. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  535. 'SQL Server 2008 R2 Service Pack 2 Express',
  536. 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'),
  537. '', False, False);
  538. end;
  539. end;
  540. procedure Dependency_AddSql2012Express;
  541. var
  542. Version: String;
  543. PackedVersion: Int64;
  544. begin
  545. // https://www.microsoft.com/en-us/download/details.aspx?id=56042
  546. 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
  547. Dependency_Add('sql2012express' + Dependency_ArchSuffix + '.exe',
  548. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  549. 'SQL Server 2012 Service Pack 4 Express',
  550. 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'),
  551. '', False, False);
  552. end;
  553. end;
  554. procedure Dependency_AddSql2014Express;
  555. var
  556. Version: String;
  557. PackedVersion: Int64;
  558. begin
  559. // https://www.microsoft.com/en-us/download/details.aspx?id=57473
  560. 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
  561. Dependency_Add('sql2014express' + Dependency_ArchSuffix + '.exe',
  562. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  563. 'SQL Server 2014 Service Pack 3 Express',
  564. 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'),
  565. '', False, False);
  566. end;
  567. end;
  568. procedure Dependency_AddSql2016Express;
  569. var
  570. Version: String;
  571. PackedVersion: Int64;
  572. begin
  573. // https://www.microsoft.com/en-us/download/details.aspx?id=103447
  574. 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, 6404, 1)) < 0) then begin
  575. Dependency_Add('sql2016express' + Dependency_ArchSuffix + '.exe',
  576. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  577. 'SQL Server 2016 Service Pack 3 Express',
  578. 'https://download.microsoft.com/download/f/a/8/fa83d147-63d1-449c-b22d-5fef9bd5bb46/SQLServer2016-SSEI-Expr.exe',
  579. '', False, False);
  580. end;
  581. end;
  582. procedure Dependency_AddSql2017Express;
  583. var
  584. Version: String;
  585. PackedVersion: Int64;
  586. begin
  587. // https://www.microsoft.com/en-us/download/details.aspx?id=55994
  588. 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
  589. Dependency_Add('sql2017express' + Dependency_ArchSuffix + '.exe',
  590. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  591. 'SQL Server 2017 Express',
  592. 'https://download.microsoft.com/download/5/E/9/5E9B18CC-8FD5-467E-B5BF-BADE39C51F73/SQLServer2017-SSEI-Expr.exe',
  593. '', False, False);
  594. end;
  595. end;
  596. procedure Dependency_AddSql2019Express;
  597. var
  598. Version: String;
  599. PackedVersion: Int64;
  600. begin
  601. // https://www.microsoft.com/en-us/download/details.aspx?id=101064
  602. 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
  603. Dependency_Add('sql2019express' + Dependency_ArchSuffix + '.exe',
  604. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  605. 'SQL Server 2019 Express',
  606. 'https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe',
  607. '', False, False);
  608. end;
  609. end;
  610. procedure Dependency_AddSql2022Express;
  611. var
  612. Version: String;
  613. PackedVersion: Int64;
  614. begin
  615. // https://www.microsoft.com/en-us/download/details.aspx?id=104781
  616. if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(16, 0, 1000, 6)) < 0) then begin
  617. Dependency_Add('sql2022express' + Dependency_ArchSuffix + '.exe',
  618. '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',
  619. 'SQL Server 2022 Express',
  620. 'https://go.microsoft.com/fwlink/p/?linkid=2216019',
  621. '', False, False);
  622. end;
  623. end;
  624. procedure Dependency_AddWebView2;
  625. begin
  626. // https://developer.microsoft.com/en-us/microsoft-edge/webview2
  627. if not RegValueExists(HKLM, Dependency_String('SOFTWARE', 'SOFTWARE\WOW6432Node') + '\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') then begin
  628. Dependency_Add('MicrosoftEdgeWebview2Setup.exe',
  629. '/silent /install',
  630. 'WebView2 Runtime',
  631. 'https://go.microsoft.com/fwlink/p/?LinkId=2124703',
  632. '', False, False);
  633. end;
  634. end;
  635. procedure Dependency_AddAccessDatabaseEngine2010;
  636. begin
  637. // https://www.microsoft.com/en-us/download/details.aspx?id=13255
  638. if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE') then begin
  639. Dependency_Add('AccessDatabaseEngine2010' + Dependency_ArchSuffix + '.exe',
  640. '/quiet',
  641. 'Microsoft Access Database Engine 2010' + Dependency_ArchTitle,
  642. Dependency_String('https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe', 'https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_X64.exe'),
  643. '', False, False);
  644. end;
  645. end;
  646. procedure Dependency_AddAccessDatabaseEngine2016;
  647. begin
  648. // https://www.microsoft.com/en-us/download/details.aspx?id=54920
  649. if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE') then begin
  650. Dependency_Add('AccessDatabaseEngine2016' + Dependency_ArchSuffix + '.exe',
  651. '/quiet',
  652. 'Microsoft Access Database Engine 2016' + Dependency_ArchTitle,
  653. Dependency_String('https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine.exe', 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine_X64.exe'),
  654. '', False, False);
  655. end;
  656. end;
  657. [Files]
  658. #ifdef Dependency_Path_NetCoreCheck
  659. ; download netcorecheck.exe: https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x86
  660. ; download netcorecheck_x64.exe: https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x64
  661. Source: "{#Dependency_Path_NetCoreCheck}netcorecheck.exe"; Flags: dontcopy noencryption
  662. Source: "{#Dependency_Path_NetCoreCheck}netcorecheck_x64.exe"; Flags: dontcopy noencryption
  663. #endif
  664. #ifdef Dependency_Path_DirectX
  665. Source: "{#Dependency_Path_DirectX}dxwebsetup.exe"; Flags: dontcopy noencryption
  666. #endif