【问题标题】:Clarification about using RunOnceId in [UninstallRun] section of Inno Setup script关于在 Inno Setup 脚本的 [UninstallRun] 部分中使用 RunOnceId 的说明
【发布时间】:2021-02-22 10:02:29
【问题描述】:

这是我的[UninstallRun] 部分:

[UninstallRun]
Filename: {dotnet40}\regasm.exe; Parameters: /u MSAToolsLibrary_x86.dll; WorkingDir: {app}; Flags: runhidden;
Filename: {dotnet4064}\regasm.exe; Parameters: /u MSAToolsLibrary_x64.dll; WorkingDir: {app}; Flags: runhidden; Check: IsWin64;
Filename: {dotnet40}\regasm.exe; Parameters: /u MSAToolsGMailLibrary_86.dll; WorkingDir: {app}\MSAToolsGMailLibrary; Flags: runhidden
Filename: {dotnet4064}\regasm.exe; Parameters: /u MSAToolsGMailLibrary_64.dll; WorkingDir: {app}\MSAToolsGMailLibrary; Flags: runhidden; Check: IsWin64;

当我使用 Inno Setup 6.1.1 进行编译时,我收到以下警告:

警告:有[UninstallRun] 部分条目没有RunOnceId 参数。通过将字符串分配给RunOnceId,您可以确保特定的[UninstallRun] 条目在卸载期间只执行一次。有关详细信息,请参阅帮助文件中的“[UninstallRun]”主题。

我查找了RunOnceId 的帮助,其中指出:

仅在[UninstallRun] 部分有效。如果多次安装同一个应用程序,“运行”条目将在卸载日志文件中重复。通过将字符串分配给RunOnceId,您可以确保特定的[UninstallRun] 条目在卸载期间只执行一次。例如,如果卸载日志中有两个或多个“运行”条目的RunOnceId 设置为“DelService”,则只会执行最新的带有RunOnceId 设置的“DelService”条目;其余的将被忽略。请注意,RunOnceId 比较区分大小写。如果您没有为RunOnceId 分配字符串,编译器会对此发出警告,可以使用MissingRunOnceIdsWarning 禁用。

我可以看到我可以关闭警告。但我想知道我是否真的需要在我的设置中使用这个参数,因为我从来没有这样做过。

【问题讨论】:

    标签: inno-setup uninstallation


    【解决方案1】:

    您应该使用该参数,如警告所示。

    如果您不这样做,对于每次升级(除非您的安装程序卸载以前的版本),您的 [UninstallRun] 命令的新执行将排队。因此,如果您安装然后升级 9 次,那么在卸载时,您所有的卸载命令将被执行 10 次。当然,就您而言,这仅意味着您的每个 regasm /u 命令将失败 9 次。没什么大不了的,但是如果用户检查卸载程序日志(以防他们遇到问题),他们会看到很多失败,这可能会误导他们。

    请注意,您无法追溯解决此问题。以前的安装程序排队的卸载命令仍将针对每个过去的安装执行。但同样,如果这是一个大问题,您可能已经注意到了。

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多