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



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

安装后,我希望InnoSetup重命名程序文件中的文件夹(如您可以在下面的[Code]部分看到)。

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

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

请注意,我有UsePreviousAppDir=yes设置为真,应该保持设置为真。

下面是我的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;