我创建了两个具有不同产品代码和版本的MSI(mypkg1.0.0和mypkg2.0.0)。两个MSI分别在安装期间创建下面的注册表项。创建注册表项的两个MSI的组件代码是相同的。
mypkg1.0.0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\{companyname}\1.0
mypkg2.0.0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\{companyname}\2.0
我已成功安装了两个MSI,并创建了以上注册表项。如果我卸载两个已安装的MSI中的任何一个,则不会删除相应的注册表项。仅针对上次卸载的MSI删除了注册表项。
场景:1
mypkg2.0.0卸载,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node {companyname} \ 2.0 =>没有删除
mypkg1.0.0卸载,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node {companyname} \ 1.0 =>删除
场景:2
mypkg1.0.0卸载,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node {companyname} \ 1.0 =>没有删除
mypkg2.0.0卸载,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node {companyname} \ 2.0 =>删除
如果安装了两个软件包,为什么不删除注册表项。虽然产品代码和版本不同,我们是否需要更改组件代码?
如果您创建注册表项,则必须删除注册表项。创建这些键的唯一方法是首先创建它们。应用程序不必使用注册表来运行,大多数应用程序根本不使用注册表。
—
Ramhound