Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在主要升级期间,Wix不会删除以前版本的burn exe_Wix_Bootstrapper_Burn_Wix3.8_Major Upgrade - Fatal编程技术网

在主要升级期间,Wix不会删除以前版本的burn exe

在主要升级期间,Wix不会删除以前版本的burn exe,wix,bootstrapper,burn,wix3.8,major-upgrade,Wix,Bootstrapper,Burn,Wix3.8,Major Upgrade,我已经使用burn引导程序创建了一个wix exe。当我尝试对它进行重大升级时,会安装新版本。新升级中缺少的功能也将从现有文件夹结构中删除。但在添加或删除程序中,我仍然可以找到这两个安装。我已经在Bootstrapper项目的Bundle.wxs文件中将版本从1.0.0.0增加到1.0.1.0。我还将安装项目的产品元素中的版本从1.0.0.0增加到1.0.1.0。我没有更改这些文件中的升级代码。我还在安装项目的Product.wxs中为产品ID创建了新的GUID。我做错了什么?为什么以前的版本仍

我已经使用burn引导程序创建了一个wix exe。当我尝试对它进行重大升级时,会安装新版本。新升级中缺少的功能也将从现有文件夹结构中删除。但在添加或删除程序中,我仍然可以找到这两个安装。我已经在Bootstrapper项目的Bundle.wxs文件中将版本从1.0.0.0增加到1.0.1.0。我还将安装项目的产品元素中的版本从1.0.0.0增加到1.0.1.0。我没有更改这些文件中的升级代码。我还在安装项目的Product.wxs中为产品ID创建了新的GUID。我做错了什么?为什么以前的版本仍然存在于添加或删除程序中?请给我一些建议

下面是Bootstrapper项目的Bundle.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
  <Bundle Name="Kube Installer" Version="1.0.0.0" Manufacturer="Zone24x7" UpgradeCode="DA4CFB28-4441-43BE-9E8E-0E3C92206324">
    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
      <Payload SourceFile="..\CustomBA\BootstrapperCore.config"/>
      <Payload SourceFile="..\CustomBA\bin\Release\CustomBA.dll"/>
      <Payload SourceFile="..\CustomBA\bin\Release\GalaSoft.MvvmLight.WPF4.dll"/>
      <Payload SourceFile="C:\Program Files (x86)\WiX Toolset v3.8\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
    </BootstrapperApplicationRef>
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value=""/>
    <WixVariable Id="WixMbaPrereqPackageId" Value=""/>
    <Chain>
      <MsiPackage SourceFile="..\KubeInstaller\bin\Release\KubeInstaller.msi" Id="KubeInstallationPackageId" Cache="yes" Visible="no"/>
    </Chain>

  </Bundle>
</Wix>
日志文件2:

[3204:32B0][2016-04-22T16:48:38]i001: Burn v3.10.2.2516, Windows v6.3 (Build 9600: Service Pack 0), path: C:\Users\MACILA~1\AppData\Local\Temp\{E6470133-8EFE-49DE-8561-A335091D3464}\.cr\KubePlatformSetup.exe
[3204:32B0][2016-04-22T16:48:38]i009: Command Line: '-burn.clean.room=G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\KubePlatformSetup.exe'
[3204:32B0][2016-04-22T16:48:38]i000: Setting string variable 'WixBundleOriginalSource' to value 'G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\KubePlatformSetup.exe'
[3204:32B0][2016-04-22T16:48:38]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\'
[3204:32B0][2016-04-22T16:48:38]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838.log'
[3204:32B0][2016-04-22T16:48:38]i000: Setting string variable 'WixBundleName' to value 'KubePlatformSetup'
[3204:32B0][2016-04-22T16:48:38]i000: Setting string variable 'WixBundleManufacturer' to value 'Zone24x7'
[3204:32B0][2016-04-22T16:48:38]i000: Loading managed bootstrapper application.
[3204:32B0][2016-04-22T16:48:38]i000: Creating BA thread to run asynchronously.
[3204:3A5C][2016-04-22T16:48:38]i000: Launching custom TestBA UX
[3204:32B0][2016-04-22T16:48:39]i100: Detect begin, 2 packages
[3204:32B0][2016-04-22T16:48:39]i102: Detected related bundle: {71ae2d4e-5c00-442b-9ea1-00cec549800d}, type: Upgrade, scope: PerMachine, version: 1.0.0.0, operation: MajorUpgrade
[3204:32B0][2016-04-22T16:48:39]i103: Detected related package: {398C5992-4E70-4844-8063-48639892BACF}, scope: PerMachine, version: 1.0.0.0, language: 0 operation: MajorUpgrade
[3204:32B0][2016-04-22T16:48:39]i103: Detected related package: {392D3E7F-6FCB-4EFD-A40F-B2F7C2CB6D44}, scope: PerMachine, version: 1.0.0.0, language: 0 operation: MajorUpgrade
[3204:32B0][2016-04-22T16:48:39]i101: Detected package: KubeUpdaterServiceInstallerId, state: Absent, cached: None
[3204:32B0][2016-04-22T16:48:39]i101: Detected package: MosquittoInstallerId, state: Absent, cached: None
[3204:32B0][2016-04-22T16:48:39]i199: Detect complete, result: 0x0
[3204:32B0][2016-04-22T16:48:40]i200: Plan begin, 2 packages, action: Install
[3204:32B0][2016-04-22T16:48:40]i000: Setting string variable 'WixBundleRollbackLog_KubeUpdaterServiceInstallerId' to value 'C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_000_KubeUpdaterServiceInstallerId_rollback.log'
[3204:32B0][2016-04-22T16:48:40]i000: Setting string variable 'WixBundleLog_KubeUpdaterServiceInstallerId' to value 'C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_000_KubeUpdaterServiceInstallerId.log'
[3204:32B0][2016-04-22T16:48:40]i000: Setting string variable 'WixBundleRollbackLog_MosquittoInstallerId' to value 'C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_001_MosquittoInstallerId_rollback.log'
[3204:32B0][2016-04-22T16:48:40]i000: Setting string variable 'WixBundleLog_MosquittoInstallerId' to value 'C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_001_MosquittoInstallerId.log'
[3204:32B0][2016-04-22T16:48:40]i201: Planned package: KubeUpdaterServiceInstallerId, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[3204:32B0][2016-04-22T16:48:40]i201: Planned package: MosquittoInstallerId, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[3204:32B0][2016-04-22T16:48:40]i207: Planned related bundle: {71ae2d4e-5c00-442b-9ea1-00cec549800d}, type: Upgrade, default requested: Absent, ba requested: Absent, execute: Uninstall, rollback: Install, dependency: None
[3204:32B0][2016-04-22T16:48:40]i299: Plan complete, result: 0x0
[3204:32B0][2016-04-22T16:48:40]i300: Apply begin
[3204:32B0][2016-04-22T16:48:40]i010: Launching elevated engine process.
[3204:32B0][2016-04-22T16:48:40]i011: Launched elevated engine process.
[3204:32B0][2016-04-22T16:48:40]i012: Connected to elevated engine.
[3680:38D0][2016-04-22T16:48:40]i358: Pausing automatic updates.
[3680:38D0][2016-04-22T16:48:40]i359: Paused automatic updates.
[3680:38D0][2016-04-22T16:48:40]i360: Creating a system restore point.
[3680:38D0][2016-04-22T16:48:40]i361: Created a system restore point.
[3680:38D0][2016-04-22T16:48:40]i370: Session begin, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f57e276b-2b99-4f55-9566-88f47c0a065c}, options: 0x7, disable resume: No
[3680:38D0][2016-04-22T16:48:40]i000: Caching bundle from: 'C:\Users\MACILA~1\AppData\Local\Temp\{89CCD5C8-EB48-4FB3-8FB5-32FC9EEAB83F}\.be\KubePlatformSetup.exe' to: 'C:\ProgramData\Package Cache\{f57e276b-2b99-4f55-9566-88f47c0a065c}\KubePlatformSetup.exe'
[3680:38D0][2016-04-22T16:48:40]i320: Registering bundle dependency provider: {f57e276b-2b99-4f55-9566-88f47c0a065c}, version: 1.0.1.0
[3680:38D0][2016-04-22T16:48:40]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f57e276b-2b99-4f55-9566-88f47c0a065c}, resume: Active, restart initiated: No, disable resume: No
[3204:2B40][2016-04-22T16:48:40]i336: Acquiring container: WixAttachedContainer, copy from: G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\KubePlatformSetup.exe
[3204:2B40][2016-04-22T16:48:40]i000: Setting string variable 'WixBundleLastUsedSource' to value 'G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\'
[3680:350C][2016-04-22T16:48:40]i305: Verified acquired payload: KubeUpdaterServiceInstallerId at path: C:\ProgramData\Package Cache\.unverified\KubeUpdaterServiceInstallerId, moving to: C:\ProgramData\Package Cache\{8C442A83-F559-488C-8CC4-21B1626F4B8E}v1.0.1.0\KubeUpdaterServiceInstaller.msi.
[3680:350C][2016-04-22T16:48:40]i305: Verified acquired payload: cabDF68CF429512A78026D040F0FB13A50B at path: C:\ProgramData\Package Cache\.unverified\cabDF68CF429512A78026D040F0FB13A50B, moving to: C:\ProgramData\Package Cache\{8C442A83-F559-488C-8CC4-21B1626F4B8E}v1.0.1.0\cab1.cab.
[3680:350C][2016-04-22T16:48:40]i305: Verified acquired payload: MosquittoInstallerId at path: C:\ProgramData\Package Cache\.unverified\MosquittoInstallerId, moving to: C:\ProgramData\Package Cache\{8201DD23-40A5-418B-B016-4D29BE6F010B}v1.0.1.0\MosquittoInstaller.msi.
[3680:350C][2016-04-22T16:48:40]i305: Verified acquired payload: cab657E45B8C9A7EF24C9A74563C2FA6EB3 at path: C:\ProgramData\Package Cache\.unverified\cab657E45B8C9A7EF24C9A74563C2FA6EB3, moving to: C:\ProgramData\Package Cache\{8201DD23-40A5-418B-B016-4D29BE6F010B}v1.0.1.0\cab1.cab.
[3680:38D0][2016-04-22T16:48:40]i323: Registering package dependency provider: {8C442A83-F559-488C-8CC4-21B1626F4B8E}, version: 1.0.1.0, package: KubeUpdaterServiceInstallerId
[3680:38D0][2016-04-22T16:48:40]i301: Applying execute package: KubeUpdaterServiceInstallerId, action: Install, path: C:\ProgramData\Package Cache\{8C442A83-F559-488C-8CC4-21B1626F4B8E}v1.0.1.0\KubeUpdaterServiceInstaller.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" INSTALLLOCATION="G:\"'
[3204:32B0][2016-04-22T16:49:17]i319: Applied execute package: KubeUpdaterServiceInstallerId, result: 0x0, restart: None
[3680:38D0][2016-04-22T16:49:17]i325: Registering dependency: {f57e276b-2b99-4f55-9566-88f47c0a065c} on package provider: {8C442A83-F559-488C-8CC4-21B1626F4B8E}, package: KubeUpdaterServiceInstallerId
[3680:38D0][2016-04-22T16:49:17]i323: Registering package dependency provider: {8201DD23-40A5-418B-B016-4D29BE6F010B}, version: 1.0.1.0, package: MosquittoInstallerId
[3680:38D0][2016-04-22T16:49:17]i301: Applying execute package: MosquittoInstallerId, action: Install, path: C:\ProgramData\Package Cache\{8201DD23-40A5-418B-B016-4D29BE6F010B}v1.0.1.0\MosquittoInstaller.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" INSTALLLOCATION="G:\"'
[3204:32B0][2016-04-22T16:49:18]i319: Applied execute package: MosquittoInstallerId, result: 0x0, restart: None
[3680:38D0][2016-04-22T16:49:18]i325: Registering dependency: {f57e276b-2b99-4f55-9566-88f47c0a065c} on package provider: {8201DD23-40A5-418B-B016-4D29BE6F010B}, package: MosquittoInstallerId
[3680:38D0][2016-04-22T16:49:18]i301: Applying execute package: {71ae2d4e-5c00-442b-9ea1-00cec549800d}, action: Uninstall, path: C:\ProgramData\Package Cache\{71ae2d4e-5c00-442b-9ea1-00cec549800d}\KubePlatformSetup.exe, arguments: '"C:\ProgramData\Package Cache\{71ae2d4e-5c00-442b-9ea1-00cec549800d}\KubePlatformSetup.exe" -uninstall -quiet -burn.related.upgrade -burn.ancestors={f57e276b-2b99-4f55-9566-88f47c0a065c}'
[3204:32B0][2016-04-22T16:51:43]i319: Applied execute package: {71ae2d4e-5c00-442b-9ea1-00cec549800d}, result: 0x0, restart: None
[3680:38D0][2016-04-22T16:51:43]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f57e276b-2b99-4f55-9566-88f47c0a065c}, resume: ARP, restart: None, disable resume: No
[3680:38D0][2016-04-22T16:51:43]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f57e276b-2b99-4f55-9566-88f47c0a065c}, resume: ARP, restart initiated: No, disable resume: No
[3204:32B0][2016-04-22T16:51:43]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No
[3204:32B0][2016-04-22T16:51:43]i500: Shutting down, exit code: 0x0
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleAction = 5
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleElevated = 1
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleLastUsedSource = G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleLog = C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838.log
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleLog_KubeUpdaterServiceInstallerId = C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_000_KubeUpdaterServiceInstallerId.log
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleLog_MosquittoInstallerId = C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_001_MosquittoInstallerId.log
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleManufacturer = Zone24x7
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleName = KubePlatformSetup
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleOriginalSource = G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\KubePlatformSetup.exe
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleOriginalSourceFolder = G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleProviderKey = {f57e276b-2b99-4f55-9566-88f47c0a065c}
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleRollbackLog_KubeUpdaterServiceInstallerId = C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_000_KubeUpdaterServiceInstallerId_rollback.log
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleRollbackLog_MosquittoInstallerId = C:\Users\MACILA~1\AppData\Local\Temp\KubePlatformSetup_20160422164838_001_MosquittoInstallerId_rollback.log
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleSourceProcessFolder = G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleSourceProcessPath = G:\Projects\Kube2\kube-installer\KubePlatformSetup\KubePlatformSetup\bin\Release\KubePlatformSetup.exe
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleTag = 
[3204:32B0][2016-04-22T16:51:43]i410: Variable: WixBundleVersion = 1.0.1.0
[3204:32B0][2016-04-22T16:51:43]i007: Exit code: 0x0, restarting: No

从日志中我看到了一些东西

就升级而言,它似乎正确地检测了所有包并正确地规划了它们

这两个安装程序包是作为主要升级安装的,并且检测到正在升级的相关捆绑包并运行以卸载它

这些问题似乎都来自于您卸载以前的捆绑包

标记为日志文件1的日志实际上是升级重新运行当前安装的引导程序以将其删除时的日志。我看到的问题就在这里:

[0980:3888][2016-04-22T16:49:19]i100: Detect begin, 2 packages
[0980:3888][2016-04-22T16:49:19]i102: Detected related bundle: {f57e276b-2b99-4f55-9566-88f47c0a065c}, type: Upgrade, scope: PerMachine, version: 1.0.1.0, operation: None
[0980:3888][2016-04-22T16:49:19]i103: Detected related package: {8C442A83-F559-488C-8CC4-21B1626F4B8E}, scope: PerMachine, version: 1.0.1.0, language: 0 operation: Downgrade
[0980:3888][2016-04-22T16:49:19]i103: Detected related package: {8201DD23-40A5-418B-B016-4D29BE6F010B}, scope: PerMachine, version: 1.0.1.0, language: 0 operation: Downgrade
[0980:3888][2016-04-22T16:49:19]i101: Detected package: KubeUpdaterServiceInstallerId, state: Obsolete, cached: Complete
[0980:3888][2016-04-22T16:49:19]i101: Detected package: MosquittoInstallerId, state: Obsolete, cached: Complete
[0980:3888][2016-04-22T16:49:19]i199: Detect complete, result: 0x0
[0980:3888][2016-04-22T16:51:43]i500: Shutting down, exit code: 0x0
所有burn引导程序所需的过程是执行检测阶段、计划阶段和应用阶段

由于某些原因,当由相关包运行时,卸载将在检测阶段之后停止

我还怀疑你的机器现在可能处于一种奇怪的状态。我想您已经安装了多个KubeUpdaterServiceInstaller和MosquittoInstaller,但都隐藏在“添加/删除程序”列表中

我要做的第一件事就是停止在构建/开发机器上安装任何东西。在编写安装程序时,您会犯错误,并导致机器在了解其已安装和未安装内容方面处于奇怪的状态。我建议使用虚拟环境进行所有安装程序测试。当你把事情搞砸了,你可以很容易地恢复到一个干净的状态,然后重新开始测试。如果您使用的是虚拟环境,那么只需忽略这一段即可。您做得不错,但请确保在测试更改和测试升级之前清理所有内容

在您的MSI wix中,我建议您使用*作为产品Id,这样您就不必在每次构建时都更改它

<Product Id="*" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="Zone24x7" UpgradeCode="E90569B5-372E-45BB-B101-58E0B75AB5C7">
在主要升级元素中添加AllowSameVersionUpgrades=yes

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowSameVersionUpgrades="yes" />
因此,您不必每次测试升级时都更新版本,只需重新构建msi安装程序即可

以下是我的Bootstrapper应用程序的Bootstrapper升级日志以及它删除旧安装时的日志,以供参考。注意一些差异


升级日志看起来与您的日志基本相同,这很好,但重新运行卸载日志有一些不同。如果没有基本了解您的整个代码库,我不能完全确定,我没有时间或意愿这样做如何解决这些问题,但希望这个答案中的某些内容能够帮助您解决问题。

从日志中,我看到了一些事情

就升级而言,它似乎正确地检测了所有包并正确地规划了它们

这两个安装程序包是作为主要升级安装的,并且检测到正在升级的相关捆绑包并运行以卸载它

这些问题似乎都来自于您卸载以前的捆绑包

标记为日志文件1的日志实际上是升级重新运行当前安装的引导程序以将其删除时的日志。我看到的问题就在这里:

[0980:3888][2016-04-22T16:49:19]i100: Detect begin, 2 packages
[0980:3888][2016-04-22T16:49:19]i102: Detected related bundle: {f57e276b-2b99-4f55-9566-88f47c0a065c}, type: Upgrade, scope: PerMachine, version: 1.0.1.0, operation: None
[0980:3888][2016-04-22T16:49:19]i103: Detected related package: {8C442A83-F559-488C-8CC4-21B1626F4B8E}, scope: PerMachine, version: 1.0.1.0, language: 0 operation: Downgrade
[0980:3888][2016-04-22T16:49:19]i103: Detected related package: {8201DD23-40A5-418B-B016-4D29BE6F010B}, scope: PerMachine, version: 1.0.1.0, language: 0 operation: Downgrade
[0980:3888][2016-04-22T16:49:19]i101: Detected package: KubeUpdaterServiceInstallerId, state: Obsolete, cached: Complete
[0980:3888][2016-04-22T16:49:19]i101: Detected package: MosquittoInstallerId, state: Obsolete, cached: Complete
[0980:3888][2016-04-22T16:49:19]i199: Detect complete, result: 0x0
[0980:3888][2016-04-22T16:51:43]i500: Shutting down, exit code: 0x0
所有burn引导程序所需的过程是执行检测阶段、计划阶段和应用阶段

由于某些原因,当由相关包运行时,卸载将在检测阶段之后停止

我还怀疑你的机器现在可能处于一种奇怪的状态。我想您已经安装了多个KubeUpdaterServiceInstaller和MosquittoInstaller,但都隐藏在“添加/删除程序”列表中

我要做的第一件事就是停止在构建/开发机器上安装任何东西。在编写安装程序时,您会犯错误,并导致机器在了解其已安装和未安装内容方面处于奇怪的状态。我建议使用虚拟环境进行所有安装程序测试。当你把事情搞砸了,你可以很容易地恢复到一个干净的状态,然后重新开始测试。如果您使用的是虚拟环境,那么只需忽略这一段即可。您做得不错,但请确保在测试更改和测试升级之前清理所有内容

在你的MSI wix中,我建议你使用 a*作为产品Id,因此您不必在每次构建时都对其进行更改

<Product Id="*" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="Zone24x7" UpgradeCode="E90569B5-372E-45BB-B101-58E0B75AB5C7">
在主要升级元素中添加AllowSameVersionUpgrades=yes

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowSameVersionUpgrades="yes" />
因此,您不必每次测试升级时都更新版本,只需重新构建msi安装程序即可

以下是我的Bootstrapper应用程序的Bootstrapper升级日志以及它删除旧安装时的日志,以供参考。注意一些差异


升级日志看起来与您的日志基本相同,这很好,但重新运行卸载日志有一些不同。基本上看不到您的整个代码库,我不能完全确定,我没有时间也没有意愿这样做如何解决这些问题,但希望这个答案中的某些内容能帮助您解决问题。

我至少找到了解决方案。我必须钩住DetectComplete方法,并在引擎上调用plan方法。下面是我是如何做到的

void DetectComplete(object sender, DetectCompleteEventArgs e)
    {
        Bootstrapper.Engine.Log(LogLevel.Verbose,"fired! but does that give you any clue?! idiot!");
        if (LaunchAction.Uninstall == Bootstrapper.Command.Action)
        {
            Bootstrapper.Engine.Log(LogLevel.Verbose, "Invoking automatic plan for uninstall");
            Bootstrapper.Engine.Plan(LaunchAction.Uninstall);
        } 
    }

我终于找到了解决办法。我必须钩住DetectComplete方法,并在引擎上调用plan方法。下面是我是如何做到的

void DetectComplete(object sender, DetectCompleteEventArgs e)
    {
        Bootstrapper.Engine.Log(LogLevel.Verbose,"fired! but does that give you any clue?! idiot!");
        if (LaunchAction.Uninstall == Bootstrapper.Command.Action)
        {
            Bootstrapper.Engine.Log(LogLevel.Verbose, "Invoking automatic plan for uninstall");
            Bootstrapper.Engine.Plan(LaunchAction.Uninstall);
        } 
    }

我看到您正在使用CustomBA.dll。您可以在升级时发布捆绑日志的计划部分吗?我猜您的引导程序应用程序正在覆盖引擎对相关捆绑包的计划,从缺席到无或存在。引擎使用PlanRelatedBundleId上的接口方法,*请求状态,如果您设置请求的状态为当前或没有,则在升级之后将保留旧的包。我已经用您所请求的类编辑了这个问题:在那里有什么奇怪的吗?我明天必须看一看C BA代码,因为我使用的是所有的C++代码。BA代码应该很有用,但我最希望看到升级%temp%的日志。您应该在检测阶段看到检测到的相关绑定{GUID}。。。关系:MajorUpgrade或类似的东西,在日志的计划部分,您应该看到与计划相关的捆绑包,并且状态计划应该是它不存在并被卸载。嘿,这是一个改进。当我在Bootstrapper的Bundle.wxs中而不是在安装项目的Product.wxs中增加版本时,主要升级似乎可以正常工作。当我同时递增这两个值时,前一个版本将保持不变。但是我不明白为什么我不应该在product.wxs中增加版本。wix burn包的默认行为是,如果版本相同,则不处理旧包。制作升级包时,必须始终升级版本。我的捆绑包的版本与构建系统的构建编号相关,因此我们使用Major.Minor.build.Revision格式,其中Major.Minor是产品版本,build是来自构建系统的构建,而Revision是来自svn的代码库版本。今天晚些时候,我将尝试添加一个答案,其中包含一些关于解决方法的更具体信息。我看到您正在使用CustomBA.dll。您可以在升级时发布捆绑日志的计划部分吗?我猜您的引导程序应用程序正在覆盖引擎对相关捆绑包的计划,从缺席到无或存在。引擎使用PlanRelatedBundleId上的接口方法,*请求状态,如果您设置请求的状态为当前或没有,则在升级之后将保留旧的包。我已经用您所请求的类编辑了这个问题:在那里有什么奇怪的吗?我明天必须看一看C BA代码,因为我使用的是所有的C++代码。BA代码应该很有用,但我最希望看到升级%temp%的日志。您应该在检测阶段看到检测到的相关绑定{GUID}。。。关系:MajorUpgrade或类似的东西,在日志的计划部分,您应该看到与计划相关的捆绑包,并且状态计划应该是它不存在并被卸载。嘿,这是一个改进。当我在Bootstrapper的Bundle.wxs中而不是在安装项目的Product.wxs中增加版本时,主要升级似乎可以正常工作。当我同时递增这两个值时,前一个版本将保持不变。但是我不明白为什么我不应该在product.wxs中增加版本。wix burn包的默认行为是,如果版本相同,则不处理旧包。制作升级包时,必须始终升级版本。我的捆绑包的版本与构建系统的构建编号相关,因此我们使用Major.Minor.build.Revision格式,其中Major.Minor是产品版本,build是来自构建系统的构建,而Revision是来自svn的代码库版本。今天晚些时候,我将尝试添加一个答案,其中包含一些关于解决方法的更具体的信息。在该机器中,它也会在检测阶段停止。有什么想法吗?im不明:请尝试在msi安装程序中使用产品Id=*。我认为您不希望引导程序检测到安装过时或操作:降级。我也尝试过:您看到BA代码有任何问题吗?A.
所有阶段都被正确处理了,对吗?不幸的是,我没有发现BA代码有任何明显的错误。您可以尝试的一件事是在实现中为ibootstrapper应用程序添加虚拟接口方法,这样您就可以在任何地方放置断点,并在代码运行时逐步遍历代码。您可能需要添加System.Diagnostics.Debugger.Launch;运行,以便您可以将调试器连接到它。谢谢,伙计,我找到了解决方案:非常感谢您的帮助我尝试了一个新的虚拟机。在该机器中,它也会在检测阶段停止。有什么想法吗?im不明:请尝试在msi安装程序中使用产品Id=*。我认为您不希望引导程序检测到安装过时或操作:降级。我也尝试过:您看到BA代码有任何问题吗?所有阶段都被正确地处理了,对吗?不幸的是,我没有看到BA代码有任何明显的错误。您可以尝试的一件事是在实现中为ibootstrapper应用程序添加虚拟接口方法,这样您就可以在任何地方放置断点,并在代码运行时逐步遍历代码。您可能需要添加System.Diagnostics.Debugger.Launch;运行,以便您可以将调试器连接到它。谢谢,伙计,我找到了解决方案:非常感谢您的帮助这里有更多信息这里有更多信息