1

当您在 Inno Setup 安装程序中提供文件夹位置时,它会将其设置为常量{app}。如果文件夹位置为C:\Program Files\Test1,这会将其设置为{app}变量。当用户给出这个路径时,是否可以{app}像这样添加到变量中C:\Program Files\Test1\MyApp-3.1

如果用户将文件夹位置指定为C:\Program Files\Test1并单击下一步按钮,则应将其更改为C:\Program Files\Test1\MyApp-3.1. 这可能吗?

根据这个页面 {app}是一个目录常量。

我在以下部分设置了许多要运行的文件,

[Icons]
[Run]
[InstallDelete]
[UninstallRun]

例如,{app}\Run.exe。而不是改变{app}\Run.exeto {app}\Program\Run.exe,我需要改变{app}to C:\Program Files\Test1\MyApp-3.1

我有一个总是需要从文件夹结构运行的程序MyApp-3.1\Run.exe。如果用户选择安装文件夹为,C:\Program Files\Test1则该文件夹需要设置为C:\Program Files\Test1\MyApp-3.1. 简单的方法是创建包含 的文件夹MyApp-3.1并将Run.exe该文件夹添加到安装程序中。所以它会安装MyApp-3.1文件夹。问题是如果文件夹名称更改为,MyApp-3.2那么代码中必须有很多更改。

问题是您可以{app}在文件夹选择对话框中单击下一步按钮后设置变量吗?

4

1 回答 1

1

看起来您实际上需要一个预处理器宏

#define DestPath "{app}\MyApp-3.1"

[Files]
Source: "Run.exe"; DestDir: "{#DestPath}"
Source: "Otherfile"; DestDir: "{#DestPath}"

[Icons]
Name: "{commondesktop}\My Program"; Filename: "{#DestPath}\Run.exe"; \
    WorkingDir: "{#DestPath}"

[Run]
Filename: "{#DestPath}\Run.exe"; Parameters: "/install"

[UninstallRun]
Filename: "{#DestPath}\Run.exe"; Parameters: "/uninstall"

如果您需要更改子文件夹名称,只需更改DestPath定义:

#define DestPath "{app}\MyApp-3.2"
于 2018-01-14T10:56:22.107 回答