简体   繁体   English

Wix-使用Burnboot引导MSI,安装成功,卸载失败。 MSI自行安装/卸载确定

[英]Wix - bootstrapping an MSI with Burn Installs ok, Uninstall Fails. MSI on it's own installs / uninstalls Ok

I've been trying to produce a bootstrapped EXE of our MSI installer with .Net 4.0 from the web for a few days now and I need some help. 几天以来,我一直在尝试从Web上用.Net 4.0生成MSI安装程序的自举EXE,我需要一些帮助。

We've a simple MSI and need to Bundle it with .Net4. 我们有一个简单的MSI,需要将其与.Net4捆绑在一起。 We've 2 variants of the MSI - x64/x86 and that's handled in the Bundle in the usual way. 我们提供了MSI的2种变体-x64 / x86,并且通常以捆绑方式处理。

The MSI installs and uninstalls fine, if .Net4 is there. 如果存在.Net4,则MSI可以很好地进行安装和卸载。 Awesome. 太棒了 Once bootstrapped, the EXE installs ok (and indeed patches .Net4 if required) and our app starts (as intended). 一旦启动,EXE就会安装成功(如果需要,甚至会安装.Net4补丁),然后我们的应用就会启动(按预期)。 The problem is uninstall. 问题是卸载。 It fails with the following log. 它失败并显示以下日志。

I'm stumped. 我很沮丧 Any clues at all? 有任何线索吗?

Bundle.wxs Bundle.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <?ifdef env.BuildNumber ?>
    <?define VersionNumber= $(env.BuildNumber) ?>
  <?else ?>
    <?define VersionNumber="1.0.0.0" ?>
  <?endif ?>
  <?define UpgradeCode="{5C7CB098-A9BB-4ABC-9496-68B96C357270}"?>

  <!-- leaving name off Bundle would stop it appearring in Control Panel-->
  <Bundle Name="App.Net Desktop Bootstrapper" 
          Version="$(var.VersionNumber)" 
          Manufacturer="App.Net" 
          UpgradeCode="$(var.UpgradeCode)"
          Condition="((VersionNT >= v5.1) AND (ServicePackLevel >= 3)) OR ((VersionNT >= v5.2) AND (ServicePackLevel >= 2)) OR (VersionNT >= v6.0)"
          IconSourceFile="..\..\assets\App.NetDesktopIcon.ico">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense"> <!-- hyperlink license form -->
      <!-- leave hyperlink url blank to prevent display -->
      <bal:WixStandardBootstrapperApplication 
        LicenseUrl=""
        SuppressOptionsUI="yes" 
        ThemeFile="..\..\assets\wixTheme\PipeInstaller.xml" 
        LocalizationFile="..\..\assets\wixTheme\MyTheme.wxl" />  <!-- setup custom theme -->
      <PayloadGroupRef Id="installPayload"/>   <!-- payload for images used in theme -->
    </BootstrapperApplicationRef>

  <PayloadGroup Id ="installPayload">
     <!-- Images referred to by name in theme -->
      <Payload Id="image1" Name ="header.png" SourceFile="..\..\assets\wixTheme\header.png" />
      <Payload Id="image2" Name ="install-smaller.png" SourceFile="..\..\assets\wixTheme\install-smaller.png" />
    </PayloadGroup>
    <Chain>
      <PackageGroupRef Id="NetFx40Web" />   <!-- bootstrap the /Net install from the web. This is build into Wix -->

      <!-- Set NOT Visible so it's viewable in Control Panel-->
      <MsiPackage
         Id="x86"
          SourceFile="..\..\bin\Win\x86\msi\App.Net.msi"
         InstallCondition="NOT VersionNT64"
         Visible="no">
        <!-- Override property values in the MSI -->
        <MsiProperty Name="AUTOUPDATEENABLED" Value="1" />
        <MsiProperty Name="AUTOSTART" Value="1" />
        <MsiProperty Name="CALLEDFROMEXE" Value="1" />
      </MsiPackage>

      <MsiPackage
          Id="x64"
          SourceFile="..\..\bin\Win\x64\msi\App.Net.msi"
          InstallCondition="VersionNT64"
          Visible="no">
        <!-- Override property values in the MSI -->
        <MsiProperty Name="AUTOUPDATEENABLED" Value="1" />
        <MsiProperty Name="AUTOSTART" Value="1" />
        <MsiProperty Name="CALLEDFROMEXE" Value="1" />
      </MsiPackage>
    </Chain>
    </Bundle>
</Wix>  

Install Error Log 安装错误日志

[0FAC:0348][2013-04-11T00:29:11]: Burn v3.6.3303.0, Windows v6.1 (Build 7601: Service Pack 1), path: C:\ProgramData\Package Cache\{c7e4c719-a2f5-46ab-8875-3bc46f059503}\App.Net.Setup.exe, cmdline: '/uninstall -burn.unelevated BurnPipe.{0ED581A2-B6CE-473D-AADF-46CF51E7DF81} {20A283F6-897C-4CFC-9718-89B0E4BD138E} 3888'
[0FAC:0348][2013-04-11T00:29:11]: Setting string variable 'WixBundleLog' to value 'C:\Users\IEUser\AppData\Local\Temp\App.Net_Desktop_Bootstrapper_20130411002911.log'
[0FAC:0348][2013-04-11T00:29:11]: Condition '((VersionNT >= v5.1) AND (ServicePackLevel >= 3)) OR ((VersionNT >= v5.2) AND (ServicePackLevel >= 2)) OR (VersionNT >= v6.0)' evaluates to true.
[0FAC:0348][2013-04-11T00:29:11]: Detect 3 packages
[0FAC:0348][2013-04-11T00:29:11]: Setting string variable 'NETFRAMEWORK40' to value '1'
[0FAC:0348][2013-04-11T00:29:11]: Condition 'NETFRAMEWORK40' evaluates to true.
[0FAC:0348][2013-04-11T00:29:11]: Detected package: NetFx40Web, state: Present, cached: Complete
[0FAC:0348][2013-04-11T00:29:11]: Detected package: x86, state: Present, cached: Complete
[0FAC:0348][2013-04-11T00:29:11]: Detected package: x64, state: Absent, cached: None
[0FAC:0348][2013-04-11T00:29:11]: Detect complete, result: 0x0
[0FAC:0348][2013-04-11T00:29:59]: Plan 3 packages, action: Uninstall
[0FAC:0348][2013-04-11T00:29:59]: Setting string variable 'WixBundleRollbackLog_x86' to value 'C:\Users\IEUser\AppData\Local\Temp\App.Net_Desktop_Bootstrapper_20130411002911_0_x86_rollback.log'
[0FAC:0348][2013-04-11T00:29:59]: Setting string variable 'WixBundleLog_x86' to value 'C:\Users\IEUser\AppData\Local\Temp\App.Net_Desktop_Bootstrapper_20130411002911_0_x86.log'
[0FAC:0348][2013-04-11T00:29:59]: Skipping dependency registration on package with no dependency providers: NetFx40Web
[0FAC:0348][2013-04-11T00:29:59]: Planned package: x64, state: Absent, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: Unregister
[0FAC:0348][2013-04-11T00:29:59]: Planned package: x86, state: Present, default requested: Absent, ba requested: Absent, execute: Uninstall, rollback: Install, cache: No, uncache: Yes, dependency: Unregister
[0FAC:0348][2013-04-11T00:29:59]: Planned package: NetFx40Web, state: Present, default requested: None, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[0FAC:0348][2013-04-11T00:29:59]: Plan complete, result: 0x0
[0FAC:0348][2013-04-11T00:29:59]: Apply begin
[0F30:0F50][2013-04-11T00:29:59]: Creating a system restore point.
[0F30:0F50][2013-04-11T00:29:59]: Could not create system restore point, error: 0x80070422. Continuing...
[0F30:0F50][2013-04-11T00:29:59]: Removed dependency: {c7e4c719-a2f5-46ab-8875-3bc46f059503} on package provider: {129A003A-2370-4378-B0FA-10509C76FE2E}, package x86
[0F30:0F50][2013-04-11T00:29:59]: Applying execute package: x86, action: Uninstall, path: C:\ProgramData\Package Cache\{129A003A-2370-4378-B0FA-10509C76FE2E}v1.0.0.0\App.Net.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" AUTOUPDATEENABLED="1" AUTOSTART="1" CALLEDFROMEXE="1"'
[0F30:0F50][2013-04-11T00:30:00]: Error 0x80070643: Failed to uninstall MSI package.
[0F30:0F50][2013-04-11T00:30:00]: Error 0x80070643: Failed to execute MSI package.
[0FAC:0348][2013-04-11T00:30:00]: Error 0x80070643: Failed to configure per-machine MSI package.
[0FAC:0348][2013-04-11T00:30:00]: Applied execute package: x86, result: 0x80070643, restart: None
[0FAC:0348][2013-04-11T00:30:00]: Error 0x80070643: Failed to execute MSI package.
[0F30:0F50][2013-04-11T00:30:00]: Applying rollback package: x86, action: Install, path: C:\ProgramData\Package Cache\{129A003A-2370-4378-B0FA-10509C76FE2E}v1.0.0.0\App.Net.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" AUTOUPDATEENABLED="1" AUTOSTART="1" CALLEDFROMEXE="1"'
[0F30:0F50][2013-04-11T00:30:01]: Registering package dependency provider: {129A003A-2370-4378-B0FA-10509C76FE2E}, version: 1.0.0.0, package: x86
[0FAC:0348][2013-04-11T00:30:01]: Applied rollback package: x86, result: 0x0, restart: None
[0F30:0F50][2013-04-11T00:30:01]: Registering dependency: {c7e4c719-a2f5-46ab-8875-3bc46f059503} on package provider: {129A003A-2370-4378-B0FA-10509C76FE2E}, package: x86
[0FAC:0348][2013-04-11T00:30:02]: Apply complete, result: 0x80070643, restart: None, ba requested restart:  No

UPDATE 更新

In response to Rob's answer (many thanks) 回应Rob的回答(非常感谢)

Rob thanks so much for that - weirdly the MSI installs/uninstalls just fine on it's own. Rob非常感谢您-奇怪的是,MSI本身就可以很好地进行安装/卸载。 I've checked the logs but I see no 'error' but I do see: 我检查了日志,但没有看到“错误”,但看到了:

MSI (s) (F0:E4) [05:36:30:999]: No System Restore sequence number for this installation.
MSI (s) (F0:E4) [05:36:30:999]: Unlocking Server
MSI (s) (F0:E4) [05:36:30:999]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'.
MSI (s) (F0:E4) [05:36:30:999]: Doing action: LaunchApplication
MSI (s) (F0:E4) [05:36:30:999]: Note: 1: 2205 2:  3: ActionText
Action ended 5:36:30: InstallFinalize. Return value 1.
MSI (s) (F0:F0) [05:36:30:999]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI1A6F.tmp, Entrypoint: WixShellExec
Action start 5:36:30: LaunchApplication.
WixShellExec:  Error 0x80070002: ShellExec failed with return code 2
WixShellExec:  Error 0x80070002: failed to launch target
CustomAction LaunchApplication returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 5:36:31: LaunchApplication. Return value 3.
Action ended 5:36:31: INSTALL. Return value 3.
MSI (s) (F0:E4) [05:36:31:015]: Note: 1: 1725
MSI (s) (F0:E4) [05:36:31:015]: Product: TheApp -- Removal failed. 

It's almost like it's trying to start the app on uninstall... thanks I thought the Bundle was right but I'm chewing up days with this. 几乎就像是试图在卸载时启动该应用程序一样……谢谢,我认为捆绑软件是正确的,但是我为此花费了很多时间。 Any advice greatfully received 收到任何建议

Add permanent="no" attribute to your MsiPackage. 向您的MsiPackage中添加“ permanent =“ no”属性。

PS: By default it says that permanent attribute value is no, but I hit the same issue and was able to fix it after adding the attribute. PS:默认情况下,它表示永久属性值为no,但是我遇到了同样的问题,并且在添加属性后能够对其进行修复。

The x86 MSI is failing to uninstall. x86 MSI无法卸载。 0x80070643 is the generic error for, "This installation package failed for some reason." 0x80070643是“由于某种原因此安装程序包失败”的一般错误。

Take a look at the .MSI log file: 'C:\\Users\\IEUser\\AppData\\Local\\Temp\\App.Net_Desktop_Bootstrapper_20130411002911_0_x86.log' You can see that log file referenced as the log file in the 'WixBundleLog_x86' variable. 看一下.MSI日志文件: 'C:\\Users\\IEUser\\AppData\\Local\\Temp\\App.Net_Desktop_Bootstrapper_20130411002911_0_x86.log'您可以在“ WixBundleLog_x86”变量中看到作为日志文件引用的该日志文件。 The log file shows that your LaunchApplication custom action failed (see this old blog post how I found the error). 日志文件显示您的LaunchApplication自定义操作失败(请参阅此旧博客文章如何找到错误)。

You need to look at the conditions on your LaunchApplication custom action since that seems to be launching your application on uninstall (which does seem odd). 您需要查看LaunchApplication自定义操作的条件,因为这似乎是在卸载时启动应用程序(这确实很奇怪)。 Could it be the fact that the AUTOSTART property is always passed with the value "1" from the Bundle to the MSI that is causing the problem? 可能是因为AUTOSTART属性始终从值捆绑中以"1"的值传递给导致问题的MSI吗?

PS: You don't need to explicitly set MsiPackage/@Visible='no' . PS:您不需要显式设置MsiPackage/@Visible='no' That is the default. 这是默认值。 :) :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM