Wix Burn,依赖项安装失败

Wix Burn, dependency installation failing

我在 Burn 中制作了一个自定义 WPF UI 来安装我的应用程序,在我的笔记本电脑上测试它很好,因为它安装了 .Net,但我已经转移到一个普通平台并且遇到了一个障碍离开。 Burn 尝试在目标上安装 .Net 框架,但是,当我单击 "accept and install" 时,会弹出一个进度对话框,然后关闭并且再也听不到了。它没有安装任何东西,刻录日志也没有用。我已经在下面发布了。 (我已从日志中删除任何内容 "mespecific",因此 <...> 中的所有内容已被删除。 有人有什么想法吗?有点困惑为什么会这样!这是我需要在 WPF 代码中做的事情吗? (即在检测包裹时?) 干杯 - 克里斯

    [09F0:0FFC][2015-04-27T08:36:15]i001: Burn v3.9.1006.0, Windows v6.1 (Build 7601: Service Pack 1), path: D:\<APP_NAME>.exe, cmdline: '-burn.unelevated BurnPipe.<GUID> <GUID> 3784 '
    [09F0:0FFC][2015-04-27T08:36:15]i000: Initializing string variable 'BURNCOMPUTERNAME' to value 'TemporaryName'
    [09F0:0FFC][2015-04-27T08:36:15]i000: Initializing string variable 'NICNAME' to value 'tmp'
    [09F0:0FFC][2015-04-27T08:36:15]i000: Initializing string variable 'SQLSERVER' to value '<SERVERNAME>'
    [09F0:0FFC][2015-04-27T08:36:15]i000: Initializing string variable 'BURNHMIVARIANT' to value 'STANDARD'
    [09F0:0FFC][2015-04-27T08:36:15]i000: Initializing string variable 'BURNTIMEZONE' to value '(GMT) Dublin, Edinburgh, Lisbon, London'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\<APP_NAME>_20150427083616.log'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Setting string variable 'WixBundleOriginalSource' to value 'D:\<APP_NAME>.exe'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'D:\'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Setting string variable 'WixBundleName' to value '<APP_NAME>'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Loading prerequisite bootstrapper application because managed host could not be loaded, error: 0x80004001.
    [09F0:0A58][2015-04-27T08:36:16]i000: Setting version variable 'WixBundleFileVersion' to value '1.0.0.0'
    [09F0:0FFC][2015-04-27T08:36:16]i100: Detect begin, 7 packages
    [09F0:0FFC][2015-04-27T08:36:16]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full'
    [09F0:0FFC][2015-04-27T08:36:16]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Expression\Blend.0\Toolbox\WPF\v3.5\WPFToolkit'
    [09F0:0FFC][2015-04-27T08:36:16]i102: Detected related bundle: <GUID>, type: Upgrade, scope: PerMachine, version: 1.0.0.0, operation: None
    [09F0:0FFC][2015-04-27T08:36:16]i102: Detected related bundle: <GUID>, type: Upgrade, scope: PerMachine, version: 1.0.0.0, operation: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: dotNetFx40_Full_x86.exe, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: WindowsXP_KB942288_v3_x86.exe, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: WindowsServer2003_KB942288_v4_x64.exe, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: WindowsXP_KB926139_v2_x86_ENU.exe, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: WindowsServer2003_KB926139_v2_x86_ENU.exe, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: WPFToolkit.msi, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i101: Detected package: <APP_INSTALL>.msi, state: Absent, cached: None
    [09F0:0FFC][2015-04-27T08:36:16]i199: Detect complete, result: 0x0
    [09F0:0FFC][2015-04-27T08:36:18]i200: Plan begin, 7 packages, action: Install
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition 'NOT (Net4FullVersion = "4.0.30319")' evaluates to true.
    [09F0:0FFC][2015-04-27T08:36:18]w321: Skipping dependency registration on package with no dependency providers: dotNetFx40_Full_x86.exe
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition '(VersionNT = v5.1) AND NOT (VersionMsi >= v4.5) AND NOT (VersionNT64)' evaluates to false.
    [09F0:0FFC][2015-04-27T08:36:18]w321: Skipping dependency registration on package with no dependency providers: WindowsXP_KB942288_v3_x86.exe
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition '(VersionNT = v5.2 OR VersionNT = v5.1) AND NOT (VersionMsi >= v4.5) AND (VersionNT64)' evaluates to false.
    [09F0:0FFC][2015-04-27T08:36:18]w321: Skipping dependency registration on package with no dependency providers: WindowsServer2003_KB942288_v4_x64.exe
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition 'VersionNT = v5.1' evaluates to false.
    [09F0:0FFC][2015-04-27T08:36:18]w321: Skipping dependency registration on package with no dependency providers: WindowsXP_KB926139_v2_x86_ENU.exe
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition 'VersionNT = v5.2' evaluates to false.
    [09F0:0FFC][2015-04-27T08:36:18]w321: Skipping dependency registration on package with no dependency providers: WindowsServer2003_KB926139_v2_x86_ENU.exe
    [09F0:0FFC][2015-04-27T08:36:18]i052: Condition 'NOT (WPFToolkit35 = "C:\Program Files\WPF Toolkit\v3.5.50211.1\")' evaluates to true.
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: dotNetFx40_Full_x86.exe, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: WindowsXP_KB942288_v3_x86.exe, state: Absent, default requested: Absent, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: WindowsServer2003_KB942288_v4_x64.exe, state: Absent, default requested: Absent, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: WindowsXP_KB926139_v2_x86_ENU.exe, state: Absent, default requested: Absent, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: WindowsServer2003_KB926139_v2_x86_ENU.exe, state: Absent, default requested: Absent, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: WPFToolkit.msi, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i201: Planned package: <APP_INSTALL>.msi, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i207: Planned related bundle: <GUID>, type: Upgrade, default requested: None, ba requested: None, execute: None, rollback: None, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i207: Planned related bundle: <GUID>, type: Upgrade, default requested: None, ba requested: None, execute: None, rollback: None, dependency: None
    [09F0:0FFC][2015-04-27T08:36:18]i299: Plan complete, result: 0x0
    [09F0:0FFC][2015-04-27T08:36:18]i300: Apply begin
    [0EC8:0068][2015-04-27T08:36:18]i360: Creating a system restore point.
    [0EC8:0068][2015-04-27T08:36:18]w363: Could not create system restore point, error: 0x800703fd. Continuing...
    [0EC8:0068][2015-04-27T08:36:18]i000: Caching bundle from: 'C:\Users\ADMINI~1\AppData\Local\Temp\<GUID>\.be\<APP_NAME>.exe' to: 'C:\ProgramData\Package Cache\<GUID>\<APP_NAME>.exe'
    [0EC8:0068][2015-04-27T08:36:18]i320: Registering bundle dependency provider: <GUID>, version: 1.0.0.0
    [09F0:0FFC][2015-04-27T08:36:18]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No
    [09F0:0FFC][2015-04-27T08:36:18]i500: Shutting down, exit code: 0x0
    [09F0:0FFC][2015-04-27T08:36:18]i000: The prerequisites were already installed. The bootstrapper application will not be reloaded to prevent an infinite loop.
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: BURNCOMPUTERNAME = TemporaryName
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: BURNHMIVARIANT = STANDARD
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: BURNTIMEZONE = (GMT) Dublin, Edinburgh, Lisbon, London
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: NICNAME = tmp
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: SQLSERVER = <SERVER_NAME>
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: VersionMsi = 5.0.0.0
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: VersionNT = 6.1.0.0
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleAction = 4
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleElevated = 1
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleFileVersion = 1.0.0.0
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleInstalled = 0
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleLog = C:\Users\ADMINI~1\AppData\Local\Temp\<APP_NAME>_20150427083616.log
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleManufacturer = <MANUF_NAME>
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleName = <APP_NAME>
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleOriginalSource = D:\<APP_NAME>.exe
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleOriginalSourceFolder = D:\
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleProviderKey = <GUID>
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleTag = 
    [09F0:0FFC][2015-04-27T08:36:18]i410: Variable: WixBundleVersion = 1.0.0.0
    [09F0:0FFC][2015-04-27T08:36:18]i007: Exit code: 0x0, restarting: No

好的,所以我相信我明白了.. 我构建捆绑包的方式存在问题 xml。 由于安装程序本身依赖.Net,(正如互联网上许多地方提到的那样)此代码段必须放在片段中..:[=​​14=]

<!-- This defines the Installation packages that the main Burn ui depends on -->
<!-- think of this as the Installer prerequisites installer. -->
<PackageGroup Id="Netfx4Full">

  <ExePackage Id="Netfx4Full"
              InstallCondition="1"
              InstallCommand="/q /norestart"
              Cache="no"
              Compressed="yes"
              PerMachine="yes"
              Permanent="yes"
              Vital="yes" 
              DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x54FullVersion)"
              SourceFile="$(var.PreReqsPath).NET\v4.0\dotNetFx40_Full_x86.exe" />

</PackageGroup>

此包依赖于这些注册表项搜索:

<util:RegistrySearch Root="HKLM"
                     Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                     Value="Version"
                     Variable="Netfx4FullVersion" />
<util:RegistrySearch Root="HKLM"
                     Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                     Value="Version"
                     Variable="Netfx4x64FullVersion"
                     Win64="yes" />

还需要包含这些 Wix 变量:

<WixVariable Id="WixMbaPrereqLicenseUrl" Value="" />
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />

哦,最后请注意,必须在链中首先引用包,

<Chain>
  <PackageGroupRef Id="Netfx4Full"/>

我遇到的主要问题是没有 "InstallCondition" 以及 "DetectCondition",一旦它们都在,安装就开始正常运行。

这有点麻烦,因为我正在复制我在网上找到的示例。希望这个经过全面测试(并且有效..)的示例将在未来为人们提供解决同一问题的方法。

无论如何都要感谢您的帮助,令我沮丧的是,我为此苦苦挣扎了三天,然后几乎在我发布到 Whosebug 后立即修复。这就是生活! ;)