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.
We've a simple MSI and need to Bundle it with .Net4. We've 2 variants of the MSI - x64/x86 and that's handled in the Bundle in the usual way.
The MSI installs and uninstalls fine, if .Net4 is there. Awesome. Once bootstrapped, the EXE installs ok (and indeed patches .Net4 if required) and our app starts (as intended). The problem is uninstall. It fails with the following log.
I'm stumped. Any clues at all?
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 thanks so much for that - weirdly the MSI installs/uninstalls just fine on it's own. 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
The x86 MSI is failing to uninstall. 0x80070643
is the generic error for, "This installation package failed for some reason."
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. The log file shows that your LaunchApplication
custom action failed (see this old blog post how I found the error).
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). 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?
PS: You don't need to explicitly set MsiPackage/@Visible='no'
. That is the default. :)
Add permanent="no" attribute to your MsiPackage.
P.S: 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.
User contributions licensed under CC BY-SA 3.0