【问题标题】:How can I install an exe, run it, then delete it before the installation process is finished using Inno Setup?如何使用 Inno Setup 在安装过程完成之前安装 exe,运行它,然后将其删除?
【发布时间】:2013-05-30 23:10:32
【问题描述】:

我可以使用 applescript 在 MacOSX 上实现我的目标,它会安装一个类似文本的文件,然后将几行文本插入到同一文件夹中的程序设置文件中。最终窗口有一个主程序的启动选项。 对于 Windows,Inno Setup 会安装该文件,然后安装第二个文件,该文件会“替换”用户程序 appdata 设置文件夹中的设置文件(如程序开发人员所建议的那样)。这对新用户来说很好,但有经验的用户不会想要他们的主设置文件被替换。

我的目标是复制 Mac 流程。我知道的唯一方法是使用批处理文件(适用于 Win XP 和 8)将文本插入到磁盘上已有的设置文件中。 AFAIK批处理文件需要在同一个文件夹中。因此,安装程序安装初始文件,然后是批处理文件。 这个批处理 exe 文件需要“运行”,我想找到一种在之后立即删除批处理文件的方法。然后该过程完成并进入最终的 Inno Setup 窗口。这可能吗?如果可以,怎么做? 如果可能,一些示例代码将是理想的。

如果有比使用批处理文件更好的方法,那么这可能是一个更好的解决方案,因此无需删除任何文件。

在过去的一年里,我通过 StackOverflow 学到了很多关于使用 Inno Setup 的知识,但找不到上述问题的解决方案。这是一个社区项目。

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    您可以使用Inno Setup Pascal Scripting 支持及其支持类和函数。像这样的东西应该可以工作:

    procedure CurStepChanged(CurStep: TSetupStep);
    var
      Lines: TStringList;
      FileName: string;
    begin
      if CurStep = ssPostInstall then
      begin
        FileName := ExpandConstant('{app}');
        FileName := AddBackslash(FileName) + 'YourFile.txt';
        Lines := TStringList.Create;
    
        // Load existing lines from file
        Lines.LoadFromFile(FileName);
        // Add your information to the end of the file
        Lines.Append('Your changed information'); // Repeat as needed
        Lines.SaveToFile(FileName);
        Lines.Free;
      end;
    end;
    

    您可以从位于 Inno Setup Examples 文件夹中的 CodeExample1.iss 文件中找到调用上述函数的示例。

    【讨论】:

    • 谢谢。该脚本忽略了添加此代码,直到我替换了函数 AppendLinesTosettings(): Boolean;使用过程 CurStepChanged (CurStep: TSetupStep);插入三行。我将它们分别放在以 Lines.Append(' 开头的单独行上。但是安装程序将每行的 3 个副本插入到文件中。我可能做错了什么?
    • :-) 我的示例只是一个要调用的函数。我应该提到你应该从哪里调用它。我将进行编辑,以便为发现此问题的未来读者做出更改。谢谢。
    • 效果很好,谢谢。它也摆脱了重复的线条。非常感谢!以及快速响应。
    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2017-05-06
    • 2012-09-19
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多