MSI - 如何防止在主要升级期间更改注册表值?

时间:2016-12-12 10:36:56

标签: windows windows-installer install upgrade installshield

我正在使用Installshiled 2016。

我正在尝试创建一个主要的升级包。一切都运行良好,不包括升级后注册表值总是更改回默认值。

场景是:

  1. 安装新的首次安装。
  2. 用户修改了一些注册表值(例如启用日志,服务器URL等)。
  3. 进行重大升级。
  4. 用户修改的注册表值将更改回其默认值(由安装程序设置)。
  5. 我已经尝试过设置" Permanent"是的,以及"永不覆盖"在组件选项卡中为yes(这适用于文件但不适用于注册表值)。

    另一件值得一提的是原始包装(全新安装)未设置为" Permanent"并且"永远不会覆盖"是的我只在较新的包装上修好了它。所以我理解第一次升级不会像我预期的那样工作,但是从第二次升级它应该运行良好,但它没有(它从文件的第二次升级很好)。 当我安装升级包(" Permanent"和#34; Never Overwrite"设置为yes)作为全新安装并尝试升级它时,它也不适用于注册表值,仅适用于文件。

    我错过了什么?

    由于

1 个答案:

答案 0 :(得分:1)

在升级过程中,您可以使用AppSearch& RegLocator表将现有值读入msi属性,然后将这些属性用作较新msi的Registry表中的默认值。这样您仍然可以删除并重写值,但升级后用户的数据不会更改。

更新:请阅读此内容以获得更详尽的解释 - http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/