Installation 在安装较新版本的msi时维护以前创建的注册表项
我需要维护由早期版本的VisualStudio安装程序(msi)创建的注册表项 因此,例如,如果我有一个产品,产品名为“product 1”版本1.0.1,它会创建一个注册表项Installation 在安装较新版本的msi时维护以前创建的注册表项,installation,registry,windows-installer,Installation,Registry,Windows Installer,我需要维护由早期版本的VisualStudio安装程序(msi)创建的注册表项 因此,例如,如果我有一个产品,产品名为“product 1”版本1.0.1,它会创建一个注册表项“HKCU\Software\product 1”,并在该注册表中创建一个由安装的应用程序更新的“Username”值 已安装的应用程序将用户的用户名持久化为“HKCU\Software\Product 1\username”,我现在需要使用Visual Studio Installer project发布一个新版本,新版
“HKCU\Software\product 1”
,并在该注册表中创建一个由安装的应用程序更新的“Username
”值
已安装的应用程序将用户的用户名持久化为“HKCU\Software\Product 1\username”
,我现在需要使用Visual Studio Installer project发布一个新版本,新版本的版本为1.0.2
如果我在安装程序项目中将“RemovePreviousVersion”
设置为true
,则先前版本创建的注册表项将被删除,存储的用户名将被删除,并要求用户重新输入用户名
如何卸载以前的版本而不删除注册表项和值
“HKCU\Software\Product 1\Username”
?您只需要为新版本使用相同的用户名,还是希望将旧条目保留在注册表中
如果您只想读取用户名,这样就不会要求用户再次输入,这很简单。我在下面解释了怎么做
将旧版本的注册表保留在机器上有点棘手,我不建议这样做。据我所知,您只想重新使用注册表中的值,因为新版本将写回注册表。是的,我确实想保留旧值。这就是问题所在。如果新安装程序可以读取旧值,并在卸载以前的版本后将其还原,这将起作用。是的,它可以读取旧值,如我的答案中的链接所示。然后,您只需从新版本安装程序将其写回注册表。