【问题标题】:Inno Setup: Close installer wizard if file exists in the program's folderInno Setup:如果程序文件夹中存在文件,则关闭安装程序向导
【发布时间】:2020-02-28 22:35:05
【问题描述】:

我正在尝试创建一个作为演示安装程序的安装程序,如果它在程序文件夹中检测到文件 close.txt,则它会关闭向导或中止安装。

我正在运行一项计划任务,该任务会在两天后自动卸载应用程序。在初始安装时,close.txt 文件安装在程序文件夹中,然后在自动卸载后,close.txt 文件留在程序文件夹中。我想当您重新运行安装程序时,它会检查此文件,如果发现它会关闭向导或中止安装。我是这方面的新手,我认为可以在代码部分完成,但我不确定。

任何帮助或代码 sn-ps 将不胜感激!

【问题讨论】:

    标签: installation inno-setup pascalscript


    【解决方案1】:

    测试InitializeSetup event function 中的文件是否存在,如果存在则返回False

    [Setup]
    DefaultDirName={autopf}\My Program
    
    [Code]
    function WasMyProgramEverInstalled: Boolean;
    begin
      Result := FileExists('{#SetupSetting("DefaultDirName")}\close.txt');
    end;
    
    function InitializeSetup: Boolean;
    begin
      Result := True;
      if WasMyProgramEverInstalled then
      begin
        MsgBox('Some message', mbError, MB_OK); { Optionally }
        Result := False;
      end;
    end;
    

    请注意,如果安装程序允许自定义安装路径,那么在卸载后重新运行安装时,您不会知道它。所以这行不通。

    【讨论】:

    • 谢谢马丁,我已经关闭并正常工作,但我认为您的解决方案非常干净,我正在执行函数 InitializeSetup(): Boolean;开始 MsgBox(ExpandConstant('Install'), mbInformation, MB_OK);如果 HasRequirements() 则开始 MsgBox('Demo Expired.', mbInformation, MB_OK);结果:=假;否则结果:=真;结束;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多