如何在卸载MSI时删除单个注册表VALUE?

时间:2010-10-31 21:05:15

标签: windows-installer registry uninstall

我的应用程序有时会在执行期间创建一个特定的注册表值,即不在安装时。此值位于我不想删除的注册表项中;我只想删除我创建的值。因为它不是在安装时创建的,所以Windows安装程序在卸载时不会自动删除它。如果MSI存在,我可以在MSI中删除该值?

Registry表似乎没有此选项。这是否意味着我必须编写自定义操作?如果是这样,任何人都有任何例子吗?

我正在使用Wise Windows Installer Edition来创建MSI。

同时发布了here

2 个答案:

答案 0 :(得分:1)

抱歉,您需要自定义操作。

答案 1 :(得分:0)

您需要执行自定义操作。

我最后通过在Deferred部分中的WriteRegistryValues之后放置自定义操作来实现此功能。

删除密钥的.vbs是这样的:

const HKLM = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Mozilla\Firefox\Extensions"
strValueName = "myext@myco.com"
oReg.DeleteValue HKLM,strKeyPath,strValueName