【问题标题】:Checking existence of a file in Inno Setup Internal Temporary folder检查 Inno Setup Internal Temporary 文件夹中是否存在文件
【发布时间】:2016-11-30 23:46:06
【问题描述】:

我希望我的 Inno 安装脚本搜索我的安装程序的 .TMP 文件,该文件通常在当前登录用户的本地应用程序数据文件夹中创建,并给用户一个消息框,提示 “您的安装程序的临时源似乎已成功创建。”

我为此编写了一个代码:

 if CurPageID = wpLicence then begin
   if FileExists((ExpandConstant({localappdata}\Temp\is-*****.tmp\MySetup.tmp))) then begin
     MsgBox('Your Setup's Temporary Source seems to be created successfully.', mbInformation, MB_OK);
     MsgBox('It is located in: <<I WANT TO GET THE FOUND FILE'S FULL PATH HERE>>', mbWarning, MB_OK);
   end;
 end; 

但是,即使我的安装程序的临时文件 (MySetup.tmp) 在安装程序开始时存在,我也没有收到这些消息框。

这段代码有什么问题?

搜索时是否忽略is-*****

更新问题

我的意思是下图中显示的临时目录。它包含安装向导的内部临时文件。这通常被命名为{#SetupName}.tmp...... 而不是 Inno Setup 提取安装程序文件的其他临时目录。例如ISSKin.dll 或任何外部使用的文件。

任何帮助将不胜感激。

【问题讨论】:

    标签: inno-setup file-exists


    【解决方案1】:

    FileExists function 不支持通配符,即使在文件名中也不支持,只允许在父文件夹的名称中。

    How to test using wildcards whether a file exists in Inno Setup


    尽管在您的情况下,只需使用 ParamStr(0)

    FileExists(ParamStr(0))
    

    【讨论】:

    • 我也试过了......但问题是 Inno Setup 认为 tmp 是临时文件被提取到的目录。不是具有设置源文件的临时文件夹............我在图像中显示了这个............请参阅我的更新问题。
    • 好的,我明白了。在这种情况下,您的问题与我的答案中链接的问题重复(因为没有更好的方法)。除非你告诉我们你真正想要达到的目标(因为我无法想象你真的想用一些关于一些临时文件夹的信息来打扰最终用户)。
    • 我添加了 MsgBoxes 用于测试目的,我真的希望它重命名 Setup.tmpSetup.exe 一段时间,并在安装完成后立即将其重命名回原来的名称......跨度>
    • 查看我的更新答案 + .tmp 正在运行脚本(不是 .exe),您无法重命名正在运行的应用程序。
    • + 你仍然没有告诉我们你想做什么。所有这些都是通向某个神秘目标的一些中间步骤。因此很可能是XY problem
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多