使用Inno Setup工具制作执行文件包

1、Inno Setup工具下载地址:http://www.jrsoftware.org/isdl.php#beta

2、Inno Setup实现的压缩包源码。

; -- SimulatorSetup.iss --
[Code]
var
ErrorCode: Integer;
IsRunning: Integer;
ResultStr: String;
ResultCode: Integer;
// 安装时判断客户端是否正在运行
//函数InitializeSetup(): Boolean;为运行安装程序前的预处理部分,返回值为true则执行安装过程,为false则停止安装
function InitializeSetup(): Boolean;
begin
  Result :=true; //安装程序继续
  //程序已经安装在你的系统中了!这个是提示安装过。你可以设定其他语言说明 例如 已安装或重复安装
  //{pf}为安装目录文件文件夹,同理如果是其他目录更改目录即可!
  if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Simulator\Simulator\Settings', 'Path') then
  begin
    Result :=true;
    if MsgBox('"仿真工具"已经安装在你的系统上了!' #13#13 '您是否需要重新安装,单击"是"继续安装,或按"否"退出!', mbInformation, MB_YESNO) = idNO then
    begin
      Result :=false; //安装程序退出
      IsRunning :=0;
    end else begin
      Result :=true; //安装程序继续
      IsRunning:=FindWindowByWindowName('XVE仿真');
      while IsRunning<>0 do
      begin
        if Msgbox('安装程序检测到"仿真工具"客户端正在运行。' #13#13 '您必须先关闭它然后单击"是"继续安装,或按"否"退出!', mbConfirmation, MB_YESNO) = idNO then
        begin
          Result :=false; //安装程序退出
          IsRunning :=0;
        end else begin
          Result :=true; //安装程序继续
          IsRunning:=FindWindowByWindowName('XVE仿真');
		      //安装程序前卸载原来安装的程序
          if RegQueryStringValue(HKLM, 'SOFTWARE\Simulator\Simulator\Settings', 'UninstallString', ResultStr) then
          begin
            ResultStr := RemoveQuotes(ResultStr);
            Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
          end;
        end;
      end;
    end;
  end;
end;

//卸载仿真工具提示信息处理,卸载时判断客户端是否正在运行
function InitializeUninstall(): Boolean;
begin
  Result := true;
  IsRunning:=FindWindowByWindowName('XVE仿真');
  while IsRunning<>0 do
  begin
    if Msgbox('安装程序检测到"仿真工具"客户端正在运行。' #13#13 '您必须先关闭它然后单击"是"继续安装,或按"否"退出!', mbConfirmation, MB_YESNO) = idNO then
    begin
      Result :=false; //安装程序退出
      IsRunning :=0;
    end else begin
      Result :=true; //安装程序继续
      IsRunning:=FindWindowByWindowName('XVE仿真');
    end;
  end;
end;

[Setup]
;安装前需要用户知道的信息页面的内容,在这里我们用F&Q.txt中的内容作为信息内容,如果没有该条语句则安装程序没有信息页面
;InfoBeforeFile= "SNSMTEFRAME\F&Q.txt"
;配置安装路径页面开关,赋值为yes,则不显示该页面,不要用户配置安装位置,而是通过defaultDirName获取
DisableDirPage=no
;安装程序的“欢迎”界面上的程序名字和程序版本号
AppName=仿真工具
AppVerName=仿真工具 version V1.0
;DefaultDirName=C:\Testtools\GTR,配置默认安装路径,作为{app}的值,作为[Files]安装路径的变量,在这里我们取上面[code]部分
;在注册表中获取的GTRpath的值作为{app}的值
DefaultDirName= {pf}\Simulator
;禁用添加到program files程序组的页面,不创建任何图标到“开始->程序菜单”
DefaultGroupName=仿真工具
;协议书(按同意之前要先看的那个)
;LicenseFile=C:\Documents and Settings\Administrator\桌面\用户使用协议.txt
; 安装完成后的话
;InfoAfterFile=C:\Documents and Settings\Administrator\桌面\安装后说明.txt
;卸载程序的图标及卸载页面显示的程序名字
UninstallDisplayIcon={app}\Simulator\unins000.exe
UninstallDisplayName=UninstallSimulator
;压缩方式
Compression=lzma
SolidCompression=yes
;不需要管理权限也能安装
PrivilegesRequired=none
;该关键字就是用来防止安装程序时当前的应用程序正在运行,而且它也可以防止用户卸载正在运行的应用程序。
;说明:  如果用户要为当前的应用程序升级为新的版本,然而当前的应用程序正在运行,该关键字就是用来防止这类事情的发生的,而且它也可以防止
;用户卸载正在运行的应用程序。它指定了一个或多个同名互斥体的名称(多个互斥体用逗号隔开),安装程序和卸载程序将会在启动时检查,如果存
;在,安装程序/卸载程序将显示如下的信息:“[安装程序或卸载程序] 检测到 [应用程序] 现在正在运行。请立即关闭它的全部实例,然后单机‘确定’继续
;,或者‘取消’退出。”  如果你要使用这个关键字就必须在你的应用程序中以该关键字指定的名称添加一个同名的互斥体。例如在 Delphi 和 C 中创建如
;下显示的同名互斥体,该代码应该在应用程序启动是被执行。  Delphi:  CreateMutex(nil, False, ’MyProgramsMutexName’);  C:  CreateMutex(NU
;LL, FALSE, "MyProgramsMutexName");  并不是必需在应用程序被结束之前显示的销毁同名互斥体对象,系统会自动完成此功能,也不推荐你这样
;做,因为理想状态下同名互斥体对象必须存在直到进程被完全终止。  注意在 Windows 下同名互斥体是大小写敏感的。  要想获得有关同名互斥体的
;更多信息请参阅 MS SDK 帮助的 CreateMutex 主题。  示例: AppMutex=MyProgramsMutexName
AppMutex=MyProgramsMutexName
;文件版本
;VersionInfoVersion=V1.0

[Tasks]
;这个段是只选的。它定义安装程序在执行安装期间所有由用户定制的任务。这些任务以选项框和单选项形式在附加任务向导页中出现
; 注意: 下面的条目包含一个中文用语 (“创建桌面快捷方式”和“添加快捷方式”)。如果需要你可以翻译为其它语言。
Name: "desktopicon"; Description: "创建桌面快捷方式"; GroupDescription: "添加快捷方式:"; Flags: checkedonce
; 注意: 下面的条目包含一个中文用语 (“创建快速运行栏快捷方式”和“添加快捷方式”)。如果需要你可以翻译为其它语言。
Name: "quicklaunchicon"; Description: "创建快速运行栏快捷方式"; GroupDescription: "添加快捷方式:"; Flags: checkedonce

[Files]
;复制文件,source后面的路径名为相对本脚本setup.iss存储位置的相对路径,DestDir后的路径为安装程序需要将文件复制到的目标路径,
;{app}取值为[setup]部分定义的DefaultDirName
Source: "release\*"; DestDir: "{app}" ;Flags: igNoreversion recursesubdirs createallsubdirs
Source: "release\Readme.txt"; DestDir: "{app}"; Flags: isreadme

[run]
;[Run] 段是可选的,用来指定程序完成安装后、在安装程序显示最终对话框之前要执行的程序
;安装完成后运行仿真的loader.exe程序
Filename: "{app}\emulator\bin\loader.exe"; Description: "{cm:LaunchProgram,loader.exe}"; Flags: nowait postinstall skipifsilent ;WorkingDir: "{app}"

[uninstallrun]

[Languages]
;添加中文包,使安装界面为中文,否则默认为英文安装界面
Name: "cn"; MessagesFile: "d:\Program Files\Inno Setup 5\Languages\ChineseSimp-11-5.1.0.isl"

[Icons]
;Name: "{group}\仿真工具"; Filename: "{app}\emulator\bin\loader.exe" ;WorkingDir: "{app}" ;Comment: "仿真应用程序控制台!"  ;Flags: useapppaths
;Name: "{userdesktop}\仿真工具"; Filename: "{app}\emulator\bin\loader.exe"; WorkingDir: "{app}" ;Comment: "仿真应用程序控制台!"  ;Flags: useapppaths

[Registry]
; Start "Software\My Company\My Program" keys under HKEY_CURRENT_USER
; and HKEY_LOCAL_MACHINE. The flags tell it to always delete the
; "My Program" keys upon uninstall, and delete the "My Company" keys
; if there is nothing left in them.
Root: HKCU; Subkey: "Software\Simulator"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\Simulator\Simulator"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Simulator\Simulator\Settings"; ValueType: string; ValueName: "Path"; ValueData: "{app}"
Root: HKCU; Subkey: "Software\Simulator\Simulator\Settings"; ValueType: string; ValueName: "UninstallString"; ValueData: "{app}\unins000.exe"
Root: HKLM; Subkey: "Software\Simulator"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\Simulator\Simulator"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\Simulator\Simulator\Settings"; ValueType: string; ValueName: "Path"; ValueData: "{app}"
Root: HKLM; Subkey: "Software\Simulator\Simulator\Settings"; ValueType: string; ValueName: "UninstallString"; ValueData: "{app}\unins000.exe"




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值