如何在 RemoveExistingProducts 期间设置其他属性

Posted

技术标签:

【中文标题】如何在 RemoveExistingProducts 期间设置其他属性【英文标题】:How to set additional properties during RemoveExistingProducts 【发布时间】:2011-07-03 12:53:07 【问题描述】:

我正在使用推荐方式升级(使用UpgradeUpgradeVersion检测产品的旧版本并使用 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 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?