Inno Setup脚本
某天夜晚一场狂风暴雨,由于办公室座位旁的窗户没关,笔记本电脑泡了一夜水,无法开机,无奈送修,里面的大量资料也不知道会不会丢失。
is的脚本只有重新写了,重新研究了一下检测程序是否正在运行的判断方法,另外新增了限制安装程序重复开启的条件。还是在这里备份一下。
; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "客服平台" #define MyAppVersion "1.6.5" #define MyAppPublisher "机构名" #define MyAppURL "http://www.网站名.com/" #define MyAppExeName "应用程序名.exe" [Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (生成新的GUID,点击 工具|在IDE中生成GUID。) AppId={{1B7F2E1D-F0D3-44D0-B460-61C4B0038784} AppName={#MyAppName} AppVersion={#MyAppVersion} AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} VersionInfoProductVersion={#MyAppVersion} VersionInfoProductTextVersion={#MyAppVersion} VersionInfoVersion={#MyAppVersion} VersionInfoCompany={#MyAppPublisher} VersionInfoCopyright={#MyAppPublisher}{#'版权所有'} DefaultDirName={pf}\ZestChat DisableDirPage=yes DisableProgramGroupPage=yes OutputDir=D:\publish\Installer OutputBaseFilename=ClientSetup SetupIconFile=D:\......\图片名.ico Compression=lzma SolidCompression=yes [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}" [CustomMessages] FinishedHeadingLabel=恭喜你,{#MyAppName}安装成功! FinishedLabel=安装程序已在您的电脑中安装了“{#MyAppName}”。此应用程序可以通过选择安装的快捷方式运行。%n%n单击 [完成(F)] 关闭安装程序。 Tooltip={#MyAppName} {#MyAppVersion} TooltipText={#MyAppName}安装正在开始... MenuStrs=显示/隐藏 {#MyAppName} 安装程序;-;关于 {#MyAppName} ;-;退出 {#MyAppName} 安装 [Files] Source: "D:\...\程序路径\...\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion” [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [Code] function InitializeSetup():boolean; //var bResult:boolean; var ErrorCode: Integer; begin Result := true; //检测是否有另一个安装程序在运行 //bResult := CheckForMutexes('MutexChatClientSetup'); if CheckForMutexes('MutexChatClientSetup') then begin MsgBox('另一安装程序已经在运行,此安装程序将退出。',mbInformation,MB_OK); Result := false; Exit; end else begin //没有就创建互斥量 CreateMutex('MutexChatClientSetup'); if CheckForMutexes('自定义名称') then //自定义名称在app.xaml.cs中为:_mutex = new Mutex(false, "ZestChatClient"); begin if MsgBox('检测到客服端正在运行中!'#13'点击 "是" 关闭客服端继续安装;'#13'点击 "否" 退出安装程序!', mbConfirmation, MB_YESNO) = IDYES then begin ShellExec('open', ExpandConstant('{cmd}'), '/c taskkill /f /t /im ChatClient.exe', '', SW_HIDE, ewNoWait, ErrorCode); Result:= true; end else Result:= false; end else Result := true; end; end;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· .NET中 泛型 + 依赖注入 的实现与应用