我正在使用WiX 3.0。我正在尝试在升级时预先保存所有注册表设置。升级时保存注册表设置
我发现下面的链接 http://www.mail-archive.com/[email protected]/msg28844.html
我更喜欢使用属性和RegistrySearch方法,而不是自定义操作方法,因为我认为它看起来更简单。
不幸的是,这种方法对我来说效果不好。我的项目有一些DWORD和SZ类型的注册表值。对于所有DWORD类型的注册表值,它在前面附加一个#。我检查了WiX参考手册。这是RegistrySearch的工作原理。
因此,升级后,结果是所有我的DWORD类型注册表被更改为SZ。该值看起来是一样的,只是它在前面附加了一个#。例如,我在类型为DWORD的注册表值“LogLevel”中获得了值2。升级后,我在同一位置使用SZ类型的注册表值“LogLevel”获得值“#2”。
下面是代码片段
<Property Id='LOG_LEVEL' Value='Information'>
<RegistrySearch Id='LogLevelRegistry' Type='raw' Root='HKLM' Key='Software\Company\Product' Name='LogLevel' Win64='$(var.Win64)'/>
</Property>
<Component Id="RegistryKey">
<RegistryKey Root='HKLM' Key='Software\Company\Product' Action='createAndRemoveOnUninstall'>
<RegistryValue Type='int' Name='LogLevel' Value='[LOG_LEVEL]'/>
</RegistryKey>
</Component>
我不知道是否有任何字符串函数,可以帮助我剪掉从LOG_LEVEL属性“#”我把它放回去了。还是有什么更聪明的方法来保存注册表键进行升级时?我应该采用自定义操作方法吗?
谢谢,我今天会检查出来 – 2010-12-10 15:22:47