Inno Setup 使用小技巧

1、如何让协议许可页面默认选中我同意按钮

[code]
procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Checked := true;
end;

2、如何隐藏安装界面右上角小图标

[code]
procedure InitializeWizard();
begin
wizardForm.WizardSmallBitmapImage.width:=0  //将宽度设为0
end;

3、安装时如何判断程序是否在运行中

function InitializeSetup(): Boolean;
begin
  result := true; 
  if CheckForMutexes({#MyAppName}) then  //程序需要创建互斥体,{#MyAppName}需要与程序互斥体一致
    begin
      MsgBox('程序正在运行,请先关闭程序后再重试! ', mbError, MB_OK); 
      result:=false;
    end;
end;

4、卸载时如何判断程序是否在运行中

function InitializeUninstall(): Boolean;
begin
  Result :=true;
  if CheckForMutexes('{#MyAppName}') then  //程序需要创建互斥体,{#MyAppName}需要与程序互斥体一致
  begin
    MsgBox(ExpandConstant('程序正在运行,请先关闭程序后再重试!'), mbError, MB_OK);
    result:=false;
  end;
end; 

5、安装和卸载时,如何实现多语言功能

[Languages]
//指定语言文件
Name: "cn"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" ; 
Name: "en"; MessagesFile: "compiler:Languages\Default.isl"; 

[CustomMessages]
//设置中文语言
cn.OverwriteInstallationTips=您已安装过该软件,是否要自动卸载后重装?
//设置英文语言
en.OverwriteInstallationTips=You have already installed the software, %ndo you want to automatically uninstall and reinstall it?

[code]
function InitializeSetup(): Boolean;
var
ResultStr: String;                                                                                                                                                                                                                                                                            
ResultCode: Integer;
//安装时判断程序是否已安装
begin
  if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{368CF051-4CFE-47C6-868C-F9F962434378}_is1', 'UninstallString', ResultStr) then
    begin
      if MsgBox('{cm:OverwriteInstallationTips}', mbConfirmation, MB_YESNO) = IDYES then  //使用cm:OverwriteInstallationTips引用设置的语言内容
        begin
          ResultStr := RemoveQuotes(ResultStr);
          Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
        end
        else begin
          result:=true;
          Abort()
        end;
    end;
    result := true;
    end;
end;

6、如何获取已安装程序版本号

//定义获取版本号函数,使用RegQueryStringValue获取版本号
function GetInstalledVersion(AppId: String): String;  //参数为程序APPID,返回值为版本号
begin
  RegQueryStringValue(HKLM64, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+ AppId + '_is1','DisplayVersion', Result);
end;

7、如何将版本号转换成可比较的数据

//定义函数,获取版本号x.x.x.x第一个数字
function GetFirstVersionNumber(const VersionStr: String): Integer;
var
  TempStr: String;
begin
  TempStr := VersionStr;
  // 将第一个点号之后的内容替换为空
  if StringChangeEx(TempStr, '.', #0, True) > 0 then
    TempStr := Copy(TempStr, 1, Pos(#0, TempStr) - 1);
  Result := StrToIntDef(TempStr, 0);
end;

8、如何在安装完成后默认不勾选“运行程序”之类的选项

[Run]
//默认情况下,"运行我的程序" 这个复选框是勾选的。如果我们想要默认不勾选,可以添加 `unchecked` 标志。
Filename: "{app}\myprogram.exe"; Description: "运行我的程序"; Flags: postinstall nowait skipifsilent unchecked
//postinstall  表示这个运行条目将显示在完成页面的复选框。
//nowait       表示安装程序不会等待该程序结束(立即继续)。
//skipifsilent 表示在静默安装时跳过这个运行条目。
//unchecked    表示不勾选复选框。

9、如何将默认安装位置设置在64位目录C:\Program Files下

[Setup]
DefaultDirName={autopf}\{#MyAppName}_v{#MyAppVersion}

ArchitecturesInstallIn64BitMode=x64 ia64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武当豆豆

为国家GDP快速增长做贡献

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值