我正在开发我的Bootstrapper项目(使用customBA),版本为3.28。
在发送之前,我将其更改为3.29并进行了测试。
当3.29完成时,它会调用机器中安装的先前版本。
我点击了之前版本屏幕上的取消以关闭它们。
更新
是因为UpgradeCode类似于搜索相关的捆绑包吗?
如果是,我应该禁用缓存还是定义升级行为?
旧引导程序运行的以下日志文件表示“此捆绑包由相关捆绑包运行,类型为”升级“。如何停止此操作?
[0B0C:2F34][2013-08-13T09:40:09]i001: Burn v3.7.1224.0, Windows v6.1 (Build 7601: Service Pack 1), path: C:\ProgramData\Package Cache\{b9f02a31-dacf-4347-b0d9-523d558be9af}\App1.Bootstrapper.exe, cmdline: '-uninstall -quiet -burn.related.upgrade -burn.embedded BurnPipe.{816C6916-20FF-4170-B29B-840713FCD78D} {84E89FE4-BE80-4A73-A176-FAF22D4C459F} 12176 -burn.unelevated BurnPipe.{55C769EC-EB8D-4196-BFA4-A4D4DB3390DB} {953972A4-1945-4ABB-AA00-3A323155D1D0} 9756'
[0B0C:2F34][2013-08-13T09:40:09]i003: This bundle is being run by a related bundle as type 'Upgrade'.
[0B0C:2F34][2013-08-13T09:40:09]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\Ranjith\AppData\Local\Temp\App1.Bootstrapper_20130813094009.log'
[0B0C:2F34][2013-08-13T09:40:09]i000: Loading managed bootstrapper application.
[0B0C:2F34][2013-08-13T09:40:09]i000: Creating BA thread to run asynchronously.
[0B0C:1214][2013-08-13T09:40:09]i000: Setting string variable 'INSTALLER_LANGUAGE' to value 'en-US'
[0B0C:1214][2013-08-13T09:40:09]i000: Setting default INSTALLER_LANGUAGE as en-US
[0B0C:2F34][2013-08-13T09:40:10]i100: Detect begin, 4 packages
[0B0C:2F34][2013-08-13T09:40:10]i102: Detected related bundle: {17819140-8d62-4611-8636-2e672025ec96}, type: Upgrade, scope: PerMachine, version: 3.29.0.0, operation: None
[0B0C:2F34][2013-08-13T09:40:10]i102: Detected related bundle: {f5896a5a-1734-45ff-a55b-d9801f87bed3}, type: Upgrade, scope: PerMachine, version: 3.29.0.0, operation: None
[0B0C:2F34][2013-08-13T09:40:10]i103: Detected related package: {49CEDE58-FA13-49C9-8900-B9B71BADAC90}, scope: PerMachine, version: 3.29.0.0, language: 0 operation: Downgrade
[0B0C:2F34][2013-08-13T09:40:10]i103: Detected related package: {49CEDE58-FA13-49C9-8900-B9B71BADAC90}, scope: PerMachine, version: 3.29.0.0, language: 0 operation: Downgrade
[0B0C:2F34][2013-08-13T09:40:10]i101: Detected package: App1.Prerequisites.SQLServer_setup.exe, state: Absent, cached: Complete
[0B0C:2F34][2013-08-13T09:40:10]i101: Detected package: App1.Prerequisites_setup.exe, state: Absent, cached: Complete
[0B0C:2F34][2013-08-13T09:40:10]i101: Detected package: App1.Setup.en, state: Obsolete, cached: Complete
[0B0C:2F34][2013-08-13T09:40:10]i101: Detected package: App1.Setup.de, state: Obsolete, cached: None
[0B0C:2F34][2013-08-13T09:40:10]i199: Detect complete, result: 0x0
[0B0C:1214][2013-08-13T09:40:12]i000: Cancelling...
[0B0C:2F34][2013-08-13T09:40:12]i500: Shutting down, exit code: 0x0
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: INSTALLER_LANGUAGE = en-US
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleAction = 3
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleElevated = 1
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleInstalled = 1
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleLastUsedSource = D:\Projects\Client\App1\Development\trunk\src\App1_Installers\App1.Bootstrapper\bin\Release\
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleLog = C:\Users\Ranjith\AppData\Local\Temp\App1.Bootstrapper_20130813094009.log
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleManufacturer = Client GmbH
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleName =
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleOriginalSource = D:\Projects\Client\App1\Development\trunk\src\App1_Installers\App1.Bootstrapper\bin\Release\App1.Bootstrapper.exe
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleProviderKey = {b9f02a31-dacf-4347-b0d9-523d558be9af}
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleTag =
[0B0C:2F34][2013-08-13T09:40:12]i410: Variable: WixBundleVersion = 3.28.0.0
[0B0C:2F34][2013-08-13T09:40:12]i007: Exit code: 0x0, restarting: No
答案 0 :(得分:1)
是的,这是正常的行为,这是因为相同的升级代码。当它看到类似的升级代码时,它知道这些是相关的软件包,然后安装较新的软件包并卸载前一个软件包。
您可以通过更改第二个版本的产品代码和升级代码来实现这一目标,这些将是2个独立产品,在捆绑和MSI级别更改 是最简单的解决方案。
如果您取出升级代码,那么捆绑包将完全独立,并且不会知道它们是相关的,因此它们将作为一个全新的包安装。或者,您可以将RELATEDBUNDLE Element元素设置为“DETECT”。
我在常规MSI上试过这个,对于常规MSI,我们使用:
<{3>}中的OnlyDetect YesNoType设置为“yes”以检测产品和应用程序 但是不要卸载。
。
如果您打算使用相同的升级代码,请确保禁止使用{4}}和UPGRADEVERSION Element。
您需要同时更新MSI中的RelatedBundle和UpgradeVersion,因为刻录会在捆绑包和MSI级别处理升级。看到这个问题:stackoverflow.com/questions/13052950/wix-burn-uninstallation我有时回到类似的问题并与Rob Mensching进行了一些电子邮件通信,他提到升级既可以在捆绑级别处理,也可以在包级别处理。
为什么不想安装以前的版本?通常最好的做法是升级,你为什么要离开呢?
确保您安装的打包MSI能够共存。通常这意味着麻烦,因为它会将文件安装到公共位置,而你不知道哪个版本存在于哪里。
阅读有关FINDRELATEDPRODUCT的文章。 此外,如果您要使用此路由,则可以使用MSI中的WixPath属性。 REMOVEEXISTINGPRODUCTS