请问InnoSetup怎样检测程序已安装,如果安装执行原程序卸载后再进行安装,无安装则直接安装?

解决方案 »

  1.   

    用Inno Setup 的确可以实现楼主的要求,不过,比实现快捷方式之类的方法要麻烦一点点
    具体就是用InnoSetup读写注册表,加入Delphi脚本实现你定制的functions
    在代码中加入下面的部分(下面第三行的'2.0' 就是标识你当前版本的,根据你的情况改一下):
    我调试过了,成功![Registry]
    Root: HKLM; Subkey: Software\The Application; ValueType: string; ValueName: Installed version; ValueData: '2.0'; Flags: uninsdeletekey[Code]
    function GetInstalledVersion(): String;
    var
    InstalledVersion: String;
    begin
    InstalledVersion :='';
    RegQueryStringValue(HKLM, 'Software\The Application', 'Installed version', InstalledVersion);
    Result := InstalledVersion;
    end;function InitializeSetup(): Boolean;
    var
    PrevVer: String;
    begin
    PrevVer := GetInstalledVersion();
    result := true;
    if length(PrevVer) > 0 then begin
    //如果发现程序已经安装过了
    MsgBox ('本程序的 ' + PrevVer + ' 版本已经安装,请卸载后再安装本程序. 安装程序将关闭.', mbError, MB_OK);
    result := false;
    end;
    end;
      

  2.   

    好像可以插入一段函数function InitializeSetup(): Boolean;
    begin
      
    end;具体的在网上查查
      

  3.   

    inno Setup本身好像就有这么一个标记
    如果你安装过以后下次安装时他自己就能识别出来
    如果你要自己读取这个标识,不知道该怎么用