visual studio 2010安装项目 - 删除注册表

时间:2011-12-28 12:21:57

标签: visual-studio setup-project registry

我有2个msi文件,我从win form应用程序(主安装程序)一个接一个地静默运行。它们都配置为写入注册表到同一位置, 例如:

HKLM\Software\MyProduct\MSI1
HKLM\Software\MyProduct\MSI2

现在,我以相反的顺序运行卸载,卸载完成后,MSI1从注册表中删除,但MSI2卡在那里......如果没有自定义操作或编码,有没有什么可以做的?

2 个答案:

答案 0 :(得分:1)

这是因为您的注册表项使用与计算机上安装的另一个产品相同的组件。例如,您复制了现有产品的安装项目,并使用该副本为其他产品创建了MSI。

为避免这种情况,您需要确保每个MSI使用唯一的component names and GUIDs。在Visual Studio安装项目中并不容易。您可以尝试编辑项目文件。如果它不起作用,最好从头开始使用新的安装项目。

答案 1 :(得分:0)

好的,我在VS2010中发现了问题(非常感谢Cosmin Pirvu),我将继续介绍迄今为止看到的2个解决方案选项。但首先,问题是:

正如我所提到的,我有2个条目: HKLM \ SOFTWARE \ myProduct的\ MSI1 HKLM \ SOFTWARE \ myProduct的\ MSI2

但在代码中,它们看起来是一样的,因为MSI1和MSI2是“占位符”: HKLM \ SOFTWARE \ myProduct的[ProductName]的

因此,名称相同且属性相同,这就是我们为两者获得相同组件ID的原因!

你能做的两件事(据我所见):

  1. 而不是[ProductName]输入实际产品名称(硬编码)

  2. (我做的是)在注册表项属性中,在条件字段中,输入无意义的字符串(使其真正无意义,因此它不会是合理的条件,我使用guid引导__)。

    < / LI>

    感谢所有答案