HJY v5.iss 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. ; 脚本由 Inno Setup 脚本向导 生成!
  2. ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
  3. #define MyAppName "慧教研扫描客户端"
  4. #define MyAppVersion "1.9.43"
  5. #define MyAppPublisher "SW"
  6. #define MyAppURL "https://www.jkydata.com/"
  7. #define MyAppExeName "HXX.Scanner.Starter.exe"
  8. [Setup]
  9. ; 注: AppId的值为单独标识该应用程序。
  10. ; 不要为其他安装程序使用相同的AppId值。
  11. ; (生成新的GUID,点击 工具|在IDE中生成GUID。)
  12. AppId={{84895A7B-88D1-4AB6-8382-6EF0E36850C8}
  13. AppName={#MyAppName}
  14. AppVersion={#MyAppVersion}
  15. AppVerName={#MyAppName} {#MyAppVersion}
  16. ;AppVerName=慧教研扫描客户端
  17. AppPublisher={#MyAppPublisher}
  18. AppPublisherURL={#MyAppURL}
  19. AppSupportURL={#MyAppURL}
  20. AppUpdatesURL={#MyAppURL}
  21. DefaultDirName={pf}\慧教研\{#MyAppName}
  22. DefaultGroupName=\慧教研\
  23. DisableProgramGroupPage=yes
  24. ;LicenseFile=D:\packing\资源\安装协议2.txt
  25. OutputDir=D:\1
  26. OutputBaseFilename=慧教研扫描客户端 安装程序 {#MyAppVersion}
  27. SetupIconFile=D:\packing\resource\desk.ico
  28. Compression=lzma
  29. SolidCompression=yes
  30. ShowLanguageDialog=no
  31. UninstallDisplayIcon={app}\卸载.ico
  32. VersionInfoVersion={#MyAppVersion}
  33. VersionInfoTextVersion={#MyAppVersion}
  34. VersionInfoCompany=慧教研 soft, Inc.
  35. VersionInfoCopyright=慧教研 soft, Inc.
  36. [Languages]
  37. Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
  38. ;Name: "english"; MessagesFile: "compiler:Languages\English.isl"
  39. [Tasks]
  40. ;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
  41. [Files]
  42. Source: "D:\packing\files\test\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs
  43. ;下面不动
  44. Source: "D:\packing\资源\UpdateIcon.dll"; Flags: solidbreak dontcopy
  45. Source: "D:\packing\资源\卸载.ico"; DestDir: "{app}"; Flags: ignoreversion
  46. ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
  47. [Icons]
  48. Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";
  49. Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
  50. ;Name: "{group}\{cm:UninstallProgram, {#MyAppName}}"; Filename: "{uninstallexe}"; IconFilename: C:\Users\Administrator\Desktop\打包\资源\卸载.ico
  51. Name: "{group}\卸载 {#MyAppName}"; Filename: "{uninstallexe}"; IconFilename: {app}\卸载.ico
  52. [Messages]
  53. ConfirmUninstall=您真的想要从电脑中卸载[慧教研扫描客户端]吗?%n%n按 [是] 则完全删除 %1 以及它的所有组件;%n按 [否]则让软件继续留在您的电脑上.
  54. [Registry]
  55. ;Root: HKLM ;SubKey:"SOFTWARE\Cobabys\ManageCloud";ValueType:dword;ValueName:INSTALL;ValueData:10 ;Flags:uninsdeletevalue
  56. Root: HKCR ;SubKey:"scannerClient";ValueType:string;ValueName:@;ValueData:"scannerClient" ;Flags:uninsdeletevalue
  57. Root: HKCR ;SubKey:"scannerClient";ValueType:string;ValueName:URL Protocol;ValueData:"" ;Flags:uninsdeletevalue
  58. Root: HKCR ;SubKey:"scannerClient\DefaultIcon";ValueType:string;ValueName:;ValueData:"{app}\{#MyAppExeName},1" ;Flags:uninsdeletevalue
  59. Root: HKCR ;SubKey:"scannerClient\Shell\Open\command";ValueType:string;ValueName:;ValueData:"""{app}\{#MyAppExeName}"" ""1%""";Flags:uninsdeletevalue
  60. Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType:string;ValueName:"{app}\{#MyAppExeName}";ValueData:"RUNASADMIN"
  61. [code]
  62. //插件函数用法
  63. //参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系
  64. //返回值: 成功 = True, 失败 = False
  65. function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;
  66. external 'UpdateIcon@files:UpdateIcon.dll stdcall';
  67. //替换卸载程序的图标
  68. function UpdateUninstIcon(const IcoFileName: String): Boolean;
  69. begin
  70. //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标,其它参数类似!
  71. Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0);
  72. //替换卸载图标
  73. end;
  74. procedure CurStepChanged(CurStep: TSetupStep);
  75. var
  76. sIcon: String;
  77. var
  78. uninspath, uninsname, NewUninsName, MyAppName: string;
  79. begin
  80. //////////////////////////////////
  81. //下面是修改卸载程序图标
  82. //////////////////////////////////
  83. //注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
  84. //安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
  85. if CurStep=ssInstall then
  86. begin
  87. sIcon:= ExpandConstant('{tmp}\卸载.ico'); //定义卸载图标
  88. ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
  89. //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
  90. UpdateUninstIcon(sIcon);//替换卸载图标
  91. end;
  92. //////////////////////////////////
  93. //下面是修改卸载程序名字
  94. //////////////////////////////////
  95. // if CurStep=ssDone then
  96. // begin
  97. // 指定新的卸载文件名(不包含扩展名),请相应修改!
  98. // NewUninsName := '卸载 库贝幼儿安全管理系统 服务端';
  99. // 应用程序名称,与 [SEUTP] 段的 AppName 必须一致,请相应修改!
  100. // MyAppName := '{#MyAppName}';
  101. // 以下重命名卸载文件
  102. // uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'));
  103. // uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);
  104. // RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe');
  105. // RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat');
  106. // 以下修改相应的注册表内容
  107. // if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1') then
  108. // begin
  109. // RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"');
  110. // RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT');
  111. // end;
  112. // end;
  113. end;
  114. function IsDotNetDetected(version: string; service: cardinal): boolean;
  115. // Indicates whether the specified version and service pack of the .NET Framework is installed.
  116. //
  117. // version -- Specify one of these strings for the required .NET Framework version:
  118. // 'v1.1' .NET Framework 1.1
  119. // 'v2.0' .NET Framework 2.0
  120. // 'v3.0' .NET Framework 3.0
  121. // 'v3.5' .NET Framework 3.5
  122. // 'v4\Client' .NET Framework 4.0 Client Profile
  123. // 'v4\Full' .NET Framework 4.0 Full Installation
  124. // 'v4.5' .NET Framework 4.5
  125. // 'v4.5.1' .NET Framework 4.5.1
  126. // 'v4.5.2' .NET Framework 4.5.2
  127. // 'v4.6' .NET Framework 4.6
  128. // 'v4.6.1' .NET Framework 4.6.1
  129. // 'v4.6.2' .NET Framework 4.6.2
  130. // 'v4.7' .NET Framework 4.7
  131. // 'v4.7.1' .NET Framework 4.7.1
  132. // 'v4.7.2' .NET Framework 4.7.2
  133. // 'v4.8' .NET Framework 4.8
  134. //
  135. // service -- Specify any non-negative integer for the required service pack level:
  136. // 0 No service packs required
  137. // 1, 2, etc. Service pack 1, 2, etc. required
  138. var
  139. key, versionKey: string;
  140. install, release, serviceCount, versionRelease: cardinal;
  141. success: boolean;
  142. begin
  143. versionKey := version;
  144. versionRelease := 0;
  145. // .NET 1.1 and 2.0 embed release number in version key
  146. if version = 'v1.1' then begin
  147. versionKey := 'v1.1.4322';
  148. end else if version = 'v2.0' then begin
  149. versionKey := 'v2.0.50727';
  150. end
  151. // .NET 4.5 and newer install as update to .NET 4.0 Full
  152. else if Pos('v4.', version) = 1 then begin
  153. versionKey := 'v4\Full';
  154. case version of
  155. 'v4.5': versionRelease := 378389;
  156. 'v4.5.1': versionRelease := 378675; // 378758 on Windows 8 and older
  157. 'v4.5.2': versionRelease := 379893;
  158. 'v4.6': versionRelease := 393295; // 393297 on Windows 8.1 and older
  159. 'v4.6.1': versionRelease := 394254; // 394271 before Win10 November Update
  160. 'v4.6.2': versionRelease := 394802; // 394806 before Win10 Anniversary Update
  161. 'v4.7': versionRelease := 460798; // 460805 before Win10 Creators Update
  162. 'v4.7.1': versionRelease := 461308; // 461310 before Win10 Fall Creators Update
  163. 'v4.7.2': versionRelease := 461808; // 461814 before Win10 April 2018 Update
  164. 'v4.8': versionRelease := 528040; // 528049 before Win10 May 2019 Update
  165. end;
  166. end;
  167. // installation key group for all .NET versions
  168. key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + versionKey;
  169. // .NET 3.0 uses value InstallSuccess in subkey Setup
  170. if Pos('v3.0', version) = 1 then begin
  171. success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
  172. end else begin
  173. success := RegQueryDWordValue(HKLM, key, 'Install', install);
  174. end;
  175. // .NET 4.0 and newer use value Servicing instead of SP
  176. if Pos('v4', version) = 1 then begin
  177. success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
  178. end else begin
  179. success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
  180. end;
  181. // .NET 4.5 and newer use additional value Release
  182. if versionRelease > 0 then begin
  183. success := success and RegQueryDWordValue(HKLM, key, 'Release', release);
  184. success := success and (release >= versionRelease);
  185. end;
  186. result := success and (install = 1) and (serviceCount >= service);
  187. end;
  188. //////////////////////////////////
  189. //检测.NET环境,检测程序是否安装过
  190. //////////////////////////////////
  191. function InitializeSetup: Boolean;
  192. //声明变量
  193. // var Isbl: boolean;
  194. // var Isstr: string;
  195. var
  196. Path: string;
  197. url:string;
  198. ResultCode: Integer;
  199. begin
  200. //////////////////////////////////
  201. //检测.NET环境
  202. //////////////////////////////////
  203. Result := true;
  204. if(not IsDotNetDetected('v4.6.1',0)) then
  205. begin
  206. url := 'https://oss.jkydata.com/000000/NDP461-KB3102436-x86-x64-AllOS-ENU.exe'
  207. Path := ExpandConstant('{pf}/Internet Explorer/iexplore.exe');
  208. Exec(Path, url , '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
  209. MsgBox('请安装好.Net Framework 4.6.1环境后,再运行本安装包程序!',mbInformation,MB_OK);
  210. Result := false;
  211. end
  212. // if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\v4.0') then
  213. // begin
  214. // Result := true;
  215. // MsgBox('aabb',mbInformation,MB_OK);
  216. // end
  217. // else
  218. // begin
  219. // MsgBox('请安装.Net Framework 4.6环境!',mbInformation,MB_OK);
  220. // Result := false;
  221. // end;
  222. //////////////////////////////////
  223. //检测程序是否安装过
  224. //////////////////////////////////
  225. // 注意下方要与安装时创建的注册表信息一致
  226. // begin
  227. // Isbl := true;
  228. // Isstr := '欢迎';
  229. // if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cobabys\ManageCloud', 'INSTALL') then
  230. // begin
  231. // MsgBox('软件已安装过,如果需要重新安装,请先卸载再安装!',mbConfirmation, MB_OK);
  232. // isbl := false;
  233. // end;
  234. //
  235. // Result := Isbl;
  236. // end;
  237. end;