【问题标题】:Write custom string value into SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall with Inno Setup使用 Inno Setup 将自定义字符串值写入 SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
【发布时间】:2020-02-18 20:58:59
【问题描述】:

在安装过程中,我想将自定义字符串值写入自动创建的注册表项HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyApp.2020_is1

我尝试在我的 iss 脚本的 [Registry] 部分执行此操作,但它似乎被忽略了。

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}.{#MyAppVersion}_is1"; ValueData: "some tag"; Flags: uninsdeletekey; ValueType: string; ValueName: "CustomTag"

这通常是不鼓励的还是我错过了一些特别的东西? 我在[Setup] 部分确实有PrivilegesRequired=admin

由于可以并排安装我的应用程序的多个构建,我想让用户可以添加描述性标签,以便他们不仅可以通过构建号而且可以通过标签识别构建。

当我在注册表中搜索以前的构建时,我试图将自定义值添加到卸载键中,而不必引用另一个键来查找自定义标记。

【问题讨论】:

    标签: installation registry inno-setup


    【解决方案1】:

    Uninstall 条目是作为安装的最后一步之一创建的。在处理 [Registry] 部分之后也是如此。检查Installation order。并且在创建条目时,它之前的内容将被完全删除,包括您的 some tag 值。

    正如@Bill_Stewart 已经评论的那样,正确的方法是使用SetPreviousData/GetPreviousData

    如果您真的想使用自己的自定义代码来编写条目,则必须通过 CurStepChanged(ssPostInstall) event 中的 Pascal 脚本来完成(在创建 Uninstall 条目后触发)。


    如果要让用户区分安装,标签必须到AppNameAppVerNameUninstallDisplayName

    如果您需要允许并行安装,则安装必须具有不同的 AppId - 这是卸载程序密钥名称的一部分,因此不需要额外的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多