我正在尝试为创建的注册表项 EDIT:(HKLM)添加默认值,但不允许在修复时重置该值,理想情况下无需编写任何代码(我认为这是Windows Installer在其工具集中可以拥有的东西)
到目前为止,这是我的解决方案:
添加了负责添加(或删除)注册表项的组件。这方面的“数据”只是属性[MYPROPERTY]
添加了一个名为MYPROPERTY
的属性,表中的值为1。可以通过命令行中的安装用户将其更改为0。
我为条件SetProperty
添加了MYPROPERTY
CA,以便它只在第一次安装时运行,而不是在修复等项目上运行。
我认为问题是我对Property表中的MYPROPERTY
值进行了1的硬编码。显然,修复会将其重置为1. 我的问题是,是否有另一种方法来查看此问题。否则,我相信我必须编写自定义CA来缓存原始值,然后在修复后恢复它。我想我正试图找出使用本机Windows Installer而不是代码的方法。
答案 0 :(得分:1)
是的,可以设置一个值,然后保留它。您可以通过为安装密钥的组件设置空白GUID来执行此操作,但我不喜欢此解决方案。
我会更新你的应用程序,在第一次启动时自己编写默认密钥。然后,应用程序可以根据需要更新密钥 - 前提是密钥存储在HKCU中,以便密钥可写。
通常所有HKCU数据都应该由application.exe写入。 HKLM数据应由设置书写并保持最低限度。
答案 1 :(得分:1)
最简单的方法是在安装程序启动时使用MSI注册表搜索搜索属性,无论是全新安装还是修复。然后该属性将被对话框覆盖,或保留已在注册表中的值,因此修复将重写正确的值。我认为没有理由在Property表中有一个默认值。
答案 2 :(得分:0)
这是我做的,如果这很有用:
REINSTALL~="ALL"
< / LI>
醇>
这样,如果用户将值更改为默认值以外的值,则会恢复