如何在 RemoveExistingProducts 期间设置其他属性
Posted
技术标签:
【中文标题】如何在 RemoveExistingProducts 期间设置其他属性【英文标题】:How to set additional properties during RemoveExistingProducts 【发布时间】:2011-07-03 12:53:07 【问题描述】:我正在使用推荐方式升级(使用Upgrade和UpgradeVersion检测产品的旧版本并使用 InstallInitialize
之后的 RemoveExistingProducts问题是,在卸载现有产品期间,我需要将其他属性传递给安装程序以保留现有数据库。有没有办法做到这一点?
【问题讨论】:
【参考方案1】:如果你是从命令行卸载,你可以使用
msiexec /x c:\Example.msi PROPERTY=VALUE
初始化你的属性。
或者,您可以将属性存储在注册表中并使用类似的东西:
<Property Id="PROPNAME">
<RegistrySearch Id="PropNameRegistry" Type="raw" Root="HKLM" Key="Software\MyProduct\MyKey\PropValue" Name="MyPropName" />
</Property>
检索它们。
【讨论】:
请参阅robmensching.com/blog/posts/2010/5/2/…,了解有关使用注册表进行属性持久性的详细信息。【参考方案2】:通过 RemoveExistingProducts 删除的所有产品都是一个额外的属性 UPGRADINGPRODUCTCODE。此属性设置为与正在删除此其他产品的安装程序的 ProductCode 匹配。如果您在安装程序被删除时对此有条件,它可以相应地采取行动。如果没有,您将需要设置 UpgradeVersion OnlyDetect 并阻止直到它消失,手动调用它的删除,或类似的解决方法。
【讨论】:
以上是关于如何在 RemoveExistingProducts 期间设置其他属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?