【转载】inno setup判断软件是否安装过

本文链接:https://blog.csdn.net/ypchen001/article/details/51008840

如果软件已在其它盘安装过,则要求先卸载;如果安装在当前盘,则直接覆盖。通过将每次安装的路径写注册表,卸载时移除注册表。

;reg path
#define REGPATH "Software\MKT\Config"


;installed msg
#define INSTALLED_CH "系统检测到其它盘已安装过,请先卸载,或覆盖,位于:"
#define INSTALLED_EN "Detect you have installed in other disk,please uninstall it first or cover it,disk path:"

[Registry]
Root: HKLM; Subkey: "{#REGPATH}"; ValueType: string; ValueName: path; ValueData: {app}; Flags: createvalueifdoesntexist uninsdeletevalue


[Code]

// 根据选择的语言加载相应的配置文件
function MyLangName(Param : String): String;
        
begin              
  Result := ActiveLanguage();
end;


// 是否安装过在其它路径下
function IsAppInstallInOtherDisk() : Boolean;
var
res : Boolean;
installpath : String;
softlan : String;
msg : String;


begin
res := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, '{#REGPATH}', 'path', installpath) then
  if (Uppercase(installpath) <> Uppercase(ExpandConstant('{app}'))) then // 转换为大写比较
    begin
      res := False;
      softlan := MyLangName('');
      if (softlan = 'English') then
        msg := '{#INSTALLED_EN}'
      else
        msg := '{#INSTALLED_CH}';


      Msgbox(msg + installpath, mbConfirmation, MB_OK);
    end;


Result := res;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
res : Boolean;


begin
  res := True;
  case CurPageID of wpSelectDir:
      res := IsAppInstallInOtherDisk();
  end;
  Result := res;
end;


另外,对于双引号里面嵌套双引号的问题,使用3个双引号即可,如3个双引号"""aaa"""最后显示为"aaa",而1个双引号"aaa"显示为aaa,2个双引号""aaa""则出错。
 ————————————————
版权声明:本文为CSDN博主「ypchen001」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ypchen001/article/details/51008840

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值