在已安装的MSI卸载中,如何防止注册表删除?

拉米亚

我们目前正在生产MSI(例如Broker.msi)。作为安装的一部分,MSI(在Wix中定义)将创建一个新的注册表项(代理),并在其下添加2个子项。安装后,当用户注册我们的产品时,在“代理”节点下又添加了一个名为“ Key3”的注册表项。请注意,“ Key3”包含非常重要的注册密钥,并且该注册密钥可被产品的其他层访问。

[注册结构安装和注册后]

HKLM \软件\ Microsoft \代理

  • Key1(由安装程序添加)

  • Key2(由安装程序添加)

  • Key3(在用户注册产品时添加)

[Wix代码段]

  <Component Id="RegistryEntries" Guid="*" Win64="$(var.WIN64_COMPONENT)">
          <RegistryKey Root="HKLM" Key="Software\Microsoft\Broker"  Action="createAndRemoveOnUninstall">
            <RegistryValue Type="string" Name="Key1" Value="1rp1users" KeyPath="yes"/>
            <RegistryValue Type="string" Name="Key2" Value="http://windowsbackup/m1" />
          </RegistryKey>
    </Component>
....
 <ComponentRef Id="RegistryEntries" />

问题:到目前为止,自从我们使用补丁程序以来,我们就面临升级的任何问题。从下一个版本开始,我们希望进行重大升级,但是最大的挑战是:在重大升级期间,旧产品将被卸载。按照wix片段,“代理”注册表元素的action元素是“ CreateAndRemoveOnUninstall”,因此整个“代理”节点以及“ Key3”子项都将被删除。

如果我将操作更新为“创建”,则新安装的问题将得到解决,但是由于msi已经投入生产,如何防止其删除注册表作为现有产品重大升级的一部分?

克里斯托弗·画家

您需要实现“记住属性”模式。这将导致新的MSI在主要升级删除旧版本之前检索数据,然后在最后重新应用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在已安装的MSI卸载中,如何防止注册表删除?

来自分类Dev

无法查询注册表中已安装的msi文件

来自分类Dev

如何在卸载时修改注册表项值而不从wix中的注册表中删除项?

来自分类Dev

如何在安装过程中在注册表中添加指向已安装EXE位置的注册表项

来自分类Dev

如何从注册表中始终检测到4.5.1已安装

来自分类Dev

为什么正常的卸载操作不会从注册表中删除值?

来自分类Dev

如果Chrome扩展程序已删除,则不会通过注册表再次安装

来自分类Dev

卸载时注册表未完全删除

来自分类Dev

如何删除注册表中的错误符号链接

来自分类Dev

如何删除注册表中的多个值

来自分类Dev

如何在WIX安装程序中设置卸载(InstallLocation)注册表项值

来自分类Dev

如何删除注册表审核规则?

来自分类Dev

如何将MSI注册表中的值更新为REG_DWORD

来自分类Dev

无法删除注册表中的值

来自分类Dev

从注册表中删除程序

来自分类Dev

让WiX / MSI始终安装一些注册表,保留一些先前存在的注册表

来自分类Dev

让WiX / MSI始终安装一些注册表,保留一些先前存在的注册表

来自分类Dev

如何防止WiX在修补时删除注册表项

来自分类Dev

如何从Github程序包注册表中删除/删除/取消链接/取消版本包

来自分类Dev

在注册表中的哪里可以找到已挂载的设备?

来自分类Dev

注册表删除值

来自分类Dev

安装VB.net应用程序时如何在注册表中写入值?

来自分类Dev

Inno setup 卸载程序不会删除重写的注册表值

来自分类Dev

如何从npm注册表中删除npm软件包?

来自分类Dev

注册表中的混淆excel安装位置

来自分类Dev

如何删除Glary Utilities和注册表修复?

来自分类Dev

列出和删除C#中的注册表子项

来自分类Dev

春季:注册表从模型中删除对象

来自分类Dev

在C#中删除单个注册表值

Related 相关文章

  1. 1

    在已安装的MSI卸载中,如何防止注册表删除?

  2. 2

    无法查询注册表中已安装的msi文件

  3. 3

    如何在卸载时修改注册表项值而不从wix中的注册表中删除项?

  4. 4

    如何在安装过程中在注册表中添加指向已安装EXE位置的注册表项

  5. 5

    如何从注册表中始终检测到4.5.1已安装

  6. 6

    为什么正常的卸载操作不会从注册表中删除值?

  7. 7

    如果Chrome扩展程序已删除,则不会通过注册表再次安装

  8. 8

    卸载时注册表未完全删除

  9. 9

    如何删除注册表中的错误符号链接

  10. 10

    如何删除注册表中的多个值

  11. 11

    如何在WIX安装程序中设置卸载(InstallLocation)注册表项值

  12. 12

    如何删除注册表审核规则?

  13. 13

    如何将MSI注册表中的值更新为REG_DWORD

  14. 14

    无法删除注册表中的值

  15. 15

    从注册表中删除程序

  16. 16

    让WiX / MSI始终安装一些注册表,保留一些先前存在的注册表

  17. 17

    让WiX / MSI始终安装一些注册表,保留一些先前存在的注册表

  18. 18

    如何防止WiX在修补时删除注册表项

  19. 19

    如何从Github程序包注册表中删除/删除/取消链接/取消版本包

  20. 20

    在注册表中的哪里可以找到已挂载的设备?

  21. 21

    注册表删除值

  22. 22

    安装VB.net应用程序时如何在注册表中写入值?

  23. 23

    Inno setup 卸载程序不会删除重写的注册表值

  24. 24

    如何从npm注册表中删除npm软件包?

  25. 25

    注册表中的混淆excel安装位置

  26. 26

    如何删除Glary Utilities和注册表修复?

  27. 27

    列出和删除C#中的注册表子项

  28. 28

    春季:注册表从模型中删除对象

  29. 29

    在C#中删除单个注册表值

热门标签

归档