Inno setup 如何在使用Inno Setup完成安装过程之前安装、运行并删除exe?

Inno setup 如何在使用Inno Setup完成安装过程之前安装、运行并删除exe?,inno-setup,Inno Setup,我可以使用applescript在MacOSX上实现我的目标,applescript安装一个类似文本的文件,然后将几行文本插入同一文件夹中的程序设置文件中。最终窗口有一个主程序的启动选项。 对于Windows,Inno安装程序将安装该文件,然后安装第二个文件,该文件将“替换”用户程序appdata设置文件夹中的设置文件(由程序开发人员推荐)。这对于新用户来说很好,但有经验的用户不希望替换其主设置文件 我的目标是复制Mac过程。我知道的唯一方法是使用批处理文件(适用于Win XP和8)将文本插入磁

我可以使用applescript在MacOSX上实现我的目标,applescript安装一个类似文本的文件,然后将几行文本插入同一文件夹中的程序设置文件中。最终窗口有一个主程序的启动选项。 对于Windows,Inno安装程序将安装该文件,然后安装第二个文件,该文件将“替换”用户程序appdata设置文件夹中的设置文件(由程序开发人员推荐)。这对于新用户来说很好,但有经验的用户不希望替换其主设置文件

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

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

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

您可以使用支持及其支持类和函数。像这样的方法应该会奏效:

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;过程curstepschanged(CurStep:TSetupStep);插入三行。我将它们分别放在以lines.Append(')开头的单独行中。但是安装程序将每行的3个副本插入到文件中。我可能做错了什么?:-)我的示例只是一个要调用的函数。我应该提到你应该从哪里打电话。我将进行编辑,以使未来的读者谁发现这个问题的变化。谢谢,效果很好,谢谢。它也消除了重复的台词。非常感谢你!以及快速的反应。