| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- ; 脚本由 Inno Setup 脚本向导 生成!
- ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
-
- #define MyAppName "慧教研扫描客户端"
- #define MyAppVersion "1.9.43"
- #define MyAppPublisher "SW"
- #define MyAppURL "https://www.jkydata.com/"
- #define MyAppExeName "HXX.Scanner.Starter.exe"
- [Setup]
- ; 注: AppId的值为单独标识该应用程序。
- ; 不要为其他安装程序使用相同的AppId值。
- ; (生成新的GUID,点击 工具|在IDE中生成GUID。)
- AppId={{84895A7B-88D1-4AB6-8382-6EF0E36850C8}
- AppName={#MyAppName}
- AppVersion={#MyAppVersion}
- AppVerName={#MyAppName} {#MyAppVersion}
- ;AppVerName=慧教研扫描客户端
- AppPublisher={#MyAppPublisher}
- AppPublisherURL={#MyAppURL}
- AppSupportURL={#MyAppURL}
- AppUpdatesURL={#MyAppURL}
- DefaultDirName={pf}\慧教研\{#MyAppName}
- DefaultGroupName=\慧教研\
- DisableProgramGroupPage=yes
- ;LicenseFile=D:\packing\资源\安装协议2.txt
- OutputDir=D:\1
- OutputBaseFilename=慧教研扫描客户端 安装程序 {#MyAppVersion}
- SetupIconFile=D:\packing\resource\desk.ico
- Compression=lzma
- SolidCompression=yes
- ShowLanguageDialog=no
- UninstallDisplayIcon={app}\卸载.ico
- VersionInfoVersion={#MyAppVersion}
- VersionInfoTextVersion={#MyAppVersion}
- VersionInfoCompany=慧教研 soft, Inc.
- VersionInfoCopyright=慧教研 soft, Inc.
- [Languages]
- Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
- ;Name: "english"; MessagesFile: "compiler:Languages\English.isl"
- [Tasks]
- ;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
- [Files]
- Source: "D:\packing\files\test\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs
- ;下面不动
- Source: "D:\packing\资源\UpdateIcon.dll"; Flags: solidbreak dontcopy
- Source: "D:\packing\资源\卸载.ico"; DestDir: "{app}"; Flags: ignoreversion
- ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
- [Icons]
- Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";
- Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
- ;Name: "{group}\{cm:UninstallProgram, {#MyAppName}}"; Filename: "{uninstallexe}"; IconFilename: C:\Users\Administrator\Desktop\打包\资源\卸载.ico
- Name: "{group}\卸载 {#MyAppName}"; Filename: "{uninstallexe}"; IconFilename: {app}\卸载.ico
- [Messages]
- ConfirmUninstall=您真的想要从电脑中卸载[慧教研扫描客户端]吗?%n%n按 [是] 则完全删除 %1 以及它的所有组件;%n按 [否]则让软件继续留在您的电脑上.
- [Registry]
- ;Root: HKLM ;SubKey:"SOFTWARE\Cobabys\ManageCloud";ValueType:dword;ValueName:INSTALL;ValueData:10 ;Flags:uninsdeletevalue
- Root: HKCR ;SubKey:"scannerClient";ValueType:string;ValueName:@;ValueData:"scannerClient" ;Flags:uninsdeletevalue
- Root: HKCR ;SubKey:"scannerClient";ValueType:string;ValueName:URL Protocol;ValueData:"" ;Flags:uninsdeletevalue
- Root: HKCR ;SubKey:"scannerClient\DefaultIcon";ValueType:string;ValueName:;ValueData:"{app}\{#MyAppExeName},1" ;Flags:uninsdeletevalue
- Root: HKCR ;SubKey:"scannerClient\Shell\Open\command";ValueType:string;ValueName:;ValueData:"""{app}\{#MyAppExeName}"" ""1%""";Flags:uninsdeletevalue
- Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType:string;ValueName:"{app}\{#MyAppExeName}";ValueData:"RUNASADMIN"
- [code]
- //插件函数用法
- //参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系
- //返回值: 成功 = True, 失败 = False
- function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;
- external 'UpdateIcon@files:UpdateIcon.dll stdcall';
- //替换卸载程序的图标
- function UpdateUninstIcon(const IcoFileName: String): Boolean;
- begin
- //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标,其它参数类似!
- Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0);
- //替换卸载图标
- end;
- procedure CurStepChanged(CurStep: TSetupStep);
- var
- sIcon: String;
- var
- uninspath, uninsname, NewUninsName, MyAppName: string;
-
- begin
- //////////////////////////////////
- //下面是修改卸载程序图标
- //////////////////////////////////
-
- //注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
- //安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
- if CurStep=ssInstall then
- begin
- sIcon:= ExpandConstant('{tmp}\卸载.ico'); //定义卸载图标
- ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
- //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
- UpdateUninstIcon(sIcon);//替换卸载图标
- end;
-
-
- //////////////////////////////////
- //下面是修改卸载程序名字
- //////////////////////////////////
- // if CurStep=ssDone then
- // begin
- // 指定新的卸载文件名(不包含扩展名),请相应修改!
- // NewUninsName := '卸载 库贝幼儿安全管理系统 服务端';
- // 应用程序名称,与 [SEUTP] 段的 AppName 必须一致,请相应修改!
- // MyAppName := '{#MyAppName}';
- // 以下重命名卸载文件
- // uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'));
- // uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);
- // RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe');
- // RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat');
- // 以下修改相应的注册表内容
- // if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1') then
- // begin
- // RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"');
- // RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT');
- // end;
- // end;
-
- end;
- function IsDotNetDetected(version: string; service: cardinal): boolean;
- // Indicates whether the specified version and service pack of the .NET Framework is installed.
- //
- // version -- Specify one of these strings for the required .NET Framework version:
- // 'v1.1' .NET Framework 1.1
- // 'v2.0' .NET Framework 2.0
- // 'v3.0' .NET Framework 3.0
- // 'v3.5' .NET Framework 3.5
- // 'v4\Client' .NET Framework 4.0 Client Profile
- // 'v4\Full' .NET Framework 4.0 Full Installation
- // 'v4.5' .NET Framework 4.5
- // 'v4.5.1' .NET Framework 4.5.1
- // 'v4.5.2' .NET Framework 4.5.2
- // 'v4.6' .NET Framework 4.6
- // 'v4.6.1' .NET Framework 4.6.1
- // 'v4.6.2' .NET Framework 4.6.2
- // 'v4.7' .NET Framework 4.7
- // 'v4.7.1' .NET Framework 4.7.1
- // 'v4.7.2' .NET Framework 4.7.2
- // 'v4.8' .NET Framework 4.8
- //
- // service -- Specify any non-negative integer for the required service pack level:
- // 0 No service packs required
- // 1, 2, etc. Service pack 1, 2, etc. required
- var
- key, versionKey: string;
- install, release, serviceCount, versionRelease: cardinal;
- success: boolean;
- begin
- versionKey := version;
- versionRelease := 0;
- // .NET 1.1 and 2.0 embed release number in version key
- if version = 'v1.1' then begin
- versionKey := 'v1.1.4322';
- end else if version = 'v2.0' then begin
- versionKey := 'v2.0.50727';
- end
- // .NET 4.5 and newer install as update to .NET 4.0 Full
- else if Pos('v4.', version) = 1 then begin
- versionKey := 'v4\Full';
- case version of
- 'v4.5': versionRelease := 378389;
- 'v4.5.1': versionRelease := 378675; // 378758 on Windows 8 and older
- 'v4.5.2': versionRelease := 379893;
- 'v4.6': versionRelease := 393295; // 393297 on Windows 8.1 and older
- 'v4.6.1': versionRelease := 394254; // 394271 before Win10 November Update
- 'v4.6.2': versionRelease := 394802; // 394806 before Win10 Anniversary Update
- 'v4.7': versionRelease := 460798; // 460805 before Win10 Creators Update
- 'v4.7.1': versionRelease := 461308; // 461310 before Win10 Fall Creators Update
- 'v4.7.2': versionRelease := 461808; // 461814 before Win10 April 2018 Update
- 'v4.8': versionRelease := 528040; // 528049 before Win10 May 2019 Update
- end;
- end;
- // installation key group for all .NET versions
- key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + versionKey;
- // .NET 3.0 uses value InstallSuccess in subkey Setup
- if Pos('v3.0', version) = 1 then begin
- success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
- end else begin
- success := RegQueryDWordValue(HKLM, key, 'Install', install);
- end;
- // .NET 4.0 and newer use value Servicing instead of SP
- if Pos('v4', version) = 1 then begin
- success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
- end else begin
- success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
- end;
- // .NET 4.5 and newer use additional value Release
- if versionRelease > 0 then begin
- success := success and RegQueryDWordValue(HKLM, key, 'Release', release);
- success := success and (release >= versionRelease);
- end;
- result := success and (install = 1) and (serviceCount >= service);
- end;
- //////////////////////////////////
- //检测.NET环境,检测程序是否安装过
- //////////////////////////////////
- function InitializeSetup: Boolean;
- //声明变量
- // var Isbl: boolean;
- // var Isstr: string;
- var
- Path: string;
- url:string;
- ResultCode: Integer;
- begin
- //////////////////////////////////
- //检测.NET环境
- //////////////////////////////////
- Result := true;
- if(not IsDotNetDetected('v4.6.1',0)) then
- begin
- url := 'https://oss.jkydata.com/000000/NDP461-KB3102436-x86-x64-AllOS-ENU.exe'
- Path := ExpandConstant('{pf}/Internet Explorer/iexplore.exe');
- Exec(Path, url , '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
- MsgBox('请安装好.Net Framework 4.6.1环境后,再运行本安装包程序!',mbInformation,MB_OK);
- Result := false;
- end
- // if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\v4.0') then
- // begin
- // Result := true;
- // MsgBox('aabb',mbInformation,MB_OK);
- // end
- // else
- // begin
- // MsgBox('请安装.Net Framework 4.6环境!',mbInformation,MB_OK);
- // Result := false;
- // end;
- //////////////////////////////////
- //检测程序是否安装过
- //////////////////////////////////
- // 注意下方要与安装时创建的注册表信息一致
- // begin
- // Isbl := true;
- // Isstr := '欢迎';
- // if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cobabys\ManageCloud', 'INSTALL') then
- // begin
- // MsgBox('软件已安装过,如果需要重新安装,请先卸载再安装!',mbConfirmation, MB_OK);
- // isbl := false;
- // end;
- //
- // Result := Isbl;
- // end;
-
- end;
|