首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Wix Burn检测以前的捆绑版本

用Wix Burn检测以前的捆绑版本
EN

Stack Overflow用户
提问于 2015-11-02 09:57:50
回答 1查看 2.8K关注 0票数 2

我正在尝试检测以前安装的包的版本号是多少。然而,burn似乎没有找到它,尽管它适当地检测到它将进行一次重大升级。

以下是我的包xml的相关部分:

代码语言:javascript
复制
<?define BUNDLE_UPGRADE_CODE=my_upgrade_code_guid?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

  <Bundle UpgradeCode="$(var.BUNDLE_UPGRADE_CODE)" DisableModify="yes" ...>

    <util:ProductSearch UpgradeCode="$(var.BUNDLE_UPGRADE_CODE)" Variable="PreviousVersion" />

    <BootstrapperApplicationRef ... />

    <Chain>
      <ExePackage Id="my_exe_package".../>
      <MsiPackage Id="my_msi_package" .../>
    </Chain>
  </Bundle>
</Wix>

其思想是,ProductSearch应该使用升级代码检测任何产品,并将版本号放在变量PreviousVersion中供以后使用。但是,burn似乎没有用此升级代码检测到任何现有产品,相反,它总是将版本设置为"0.0.0.0“。下面是日志文件的相关部分(为了清晰起见对其进行了一些编辑):

代码语言:javascript
复制
...: Detect begin, 2 packages
...: Product or related product not found: {my_upgrade_code_guid}
...: Setting version variable 'PreviousVersion' to value '0.0.0.0'
...: Detected related bundle: {previous_bundle_product_code}, type: Upgrade, scope: PerMachine, version: 1.0.0.0, operation: MajorUpgrade
...: Detected related package: {previous_msi_product_code}, scope: PerMachine, version: 1.0.0.0, language: 0 operation: MajorUpgrade
...: Detected package: my_exe_package, state: Absent, cached: Complete
...: Detected package: my_msi_package, state: Absent, cached: None
...: Detect complete, result: 0x0
...: Plan begin, 2 packages, action: Install
...: Skipping dependency registration on package with no dependency providers: my_exe_package
...
...: Planned package: my_exe_package, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: No, uncache: No, dependency: None
...: Planned package: my_msi_package, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
...: Planned related bundle: {previous_bundle_product_code}, type: Upgrade, default requested: Absent, ba requested: Absent, execute: Uninstall, rollback: Install, dependency: None
...: Plan complete, result: 0x0

如果我使用使用MsiEnumRelatedProducts的升级代码“手动”查询产品,我也找不到它,而从msi包中查询升级代码则正确地返回msi产品。

是我的期望吗?在这种情况下,我可以不用查询msi升级代码,因为那个版本对我来说总是一样的。我更感兴趣的是,为什么这样做不像我想的那样有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 19:35:16

ProductSearchMsiEnumRelatedProducts寻找的是MSI包,而不是燃烧包。自定义引导程序在其OnDetectRelatedBundle回调中获取现有包的版本。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33474944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档