InnoSetup 重命名安装文件夹和 运行 Exe

InnoSetup Rename Install Folder and Run Exe

我正在使用 InnoSetup 创建补丁安装程序。

安装后,我希望 InnoSetup 重命名 Program Files 中的文件夹(如您在下面的 [Code] 部分中所见。

这很好用。但是,在安装结束时,它会提示我是否要 运行 该应用程序。选择是时 - 它会在旧路径中查找 exe 文件。这是有道理的,因为那是 {app} 变量中的内容。

所以我的问题是,如何让 [Run] 部分查看新重命名的路径?

请注意,我已将 UsePreviousAppDir=yes 设置为 true,应该保持设置为 true。

以下是我的 InnoSetup 的相关参数:

[Setup]
UsePreviousAppDir=yes

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Code]
{ ///////////////////////////////////////////////////////////////////// }
procedure InitializeWizard();
begin
  RenameFile(ExpandConstant('{app}'), ExpandConstant('..\{app}') + ExpandConstant('{#MyAppName}') + ' ' + ExpandConstant('{#MyAppVersion}'))
end;

更新: 能够让它现在工作。看来我上面的路径不正确。答案已发布在下方。

设法让它现在工作。

[Run]
Filename: "{app}\..\{#MyAppName} {#MyAppVersion}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Code]
{ ///////////////////////////////////////////////////////////////////// }
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if (CurStep=ssPostInstall) then
  begin
    RenameFile(ExpandConstant('{app}'), ExpandConstant('{app}\..\{#MyAppName} {#MyAppVersion}'))
  end;
end;