Inno setup Inno安装程序在安装后续过程中执行[UninstallRun]

Inno setup Inno安装程序在安装后续过程中执行[UninstallRun],inno-setup,Inno Setup,这个问题: 例如,代码: [UninstallRun] Filename: "{sys}\OfflineSvc.exe"; Parameters: "-uninstall"; WorkingDir: "{sys}"; Flags: skipifdoesntexist 32bit; StatusMsg: "Offline Processing service is being uninstalled. Please wait..."; BeforeInstall: SimpleStopServi

这个问题:

例如,代码:

[UninstallRun]
Filename: "{sys}\OfflineSvc.exe"; Parameters: "-uninstall"; WorkingDir: "{sys}"; Flags: skipifdoesntexist 32bit; StatusMsg: "Offline Processing service is being uninstalled. Please wait..."; BeforeInstall: SimpleStopService('Offline_Service', True, False); Flags: waituntilterminated
没有明确的解决方案。它似乎指出了原因,但没有提供明显的解决方案(也许我只是太笨了)

为什么卸载运行项目在安装期间运行

如果这是正常的-你如何预防它

INNO帮助说:


[UninstallRun]部分也是可选的,它指定了作为卸载的第一步要执行的任意数量的程序

因此,可以预期卸载运行部分仅在卸载时执行


对不起-我是一个新发布的SO,它不会让我对上述问题发表评论,所以除了发布一个新的问题,我看不到任何其他方法来获取更多信息。如果有更好的方法供新手使用,请告诉我应该如何操作。

安装过程中实际上不会运行[UninstallRun]部分,但会写入安装过程中创建的卸载程序日志。您只需在安装脚本中指定[UninstallRun]部分,这样您就可以告诉卸载程序除了删除已安装的内容外还应该做什么,例如,您可以使用它来停止并删除您在安装过程中使用[Run]部分中的sc.exe安装的服务


在引用的示例中,它正在评估{code}函数,以确定要添加到卸载程序日志中的硬编码文件名,因为我认为卸载程序中不能有要在卸载时评估的代码查询,只有存储在卸载日志中的硬编码文件名和路径。

如果这是真的,我不会问这个问题。它确实在安装期间运行。请参阅我刚才添加的其他信息。在引用的示例中,{code}函数在安装过程中对其进行评估,以将文件名添加到卸载日志中,但在安装过程中它实际上没有运行。我添加了没有该功能的项目。不过,您是在安装前使用调用[Code]函数:SimpleStopService(脱机服务)。假设您只是想在卸载之前停止服务,情况似乎就是这样,您可以简单地在
文件名:“{sys}\sc.exe”
的上面使用另一行,然后在
参数中添加
“stop Offline_Service”
以消除在安装之前使用
代码功能的需要。您还可以使用
文件名:“{sys}\sc.exe”;参数:“delete Offline_Service”
将其删除。@托比,您的脚本没有问题(如果用户在卸载应用程序之前不移动其Windows系统目录路径。因为
{sys}
常量在安装时计算为实际路径)。条目本身是在卸载时执行的,正如Robert正确回答的那样,在安装时必须确定(评估)它的每个参数值。话虽如此,您知道问题出在哪里了,安装时执行的
{code}
函数用于
文件名
参数。请回答您的问题,并包含一个演示此行为的脚本。如果不能提供复制问题的方法,则无法确定是否存在实际问题(或提供解决方案)。有关如何操作的建议,请参阅。抱歉。我要的是一个脚本,而不是一个
[UninstallRun]
条目。包括一个示例脚本,我们可以使用该脚本创建一个示例设置来重现问题。我本可以从另一篇文章中复制你的样本,但它本身并没有重现这个问题。请参阅我之前提供的最小、完整且可验证的示例链接。我的INNO脚本有550行长-是否有附加文件的方法。我们的注释似乎重叠了。:-)Inno Setup samples文件夹中有几个脚本示例,这些脚本可以作为示例构建(和执行安装),而无需实际安装文件。选择一个,对其进行更改以演示问题,并将其张贴在此处。好的-可能是周一,我才能这样做。