2

使用与示例几乎相同的非常简单的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Version="1.0" Manufacturer="ACME" UpgradeCode="6AF8AF7D-3B44-4496-9E64-56206DF66C55">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
    <Chain>
    <MsiPackage SourceFile="wpftoolkit.msi"/>
    </Chain>
    </Bundle>
    </Wix>

我得到一个 setup.msi 文件,它在开始时立即产生错误:

    msiexec /i setup.msi /l*v log.txt
    log.txt:
    === Verbose logging started: 02.10.2013  14:12:11  Build type: SHIP UNICODE 5.00.7600.00  Calling process: C:\Windows\system32\msiexec.exe ===
    MSI (c) (B0:48) [14:12:11:804]: Font created.  Charset: Req=204, Ret=204, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
    MSI (c) (B0:48) [14:12:11:805]: Font created.  Charset: Req=204, Ret=204, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
    MSI (c) (B0:A4) [14:12:11:823]: Resetting cached policy values
    MSI (c) (B0:A4) [14:12:11:823]: Machine policy value 'Debug' is 0
    MSI (c) (B0:A4) [14:12:11:823]: ******* RunEngine:
    ******* Product: Setup.msi
    ******* Action: 
    ******* CommandLine: **********
    MSI (c) (B0:A4) [14:12:11:824]: Note: 1: 2203 2: Setup.msi 3: -2147286960 
    MSI (c) (B0:A4) [14:12:11:824]: MainEngineThread is returning 1620
    === Verbose logging stopped: 02.10.2013  14:12:11 ===

Wix SDK 中的工具 dark.exe 表示 setup.msi 已损坏且无法反汇编。上周我有几次设法编译这种类型的包并且 msi 运行良好,但我无法弄清楚我正在做的事情之间有什么关联。

我也尝试在不使用 MSBuild 的情况下编译此示例,但直接使用 Wix SDK 工具 - 仍然没有运气 - 编译完成时没有错误,但生成的 msi 无论如何都已损坏:

    candle *.wxs
    light *.wixobj -out setup.msi -ext WixBalExtension

关于编译 Wix 捆绑包,我是否遗漏了一些东西以阻止它正常工作?

4

2 回答 2

2

AWix/Bundle用于生成将安装程序链接在一起的可执行文件。因此,应为输出提供 .exe 扩展名。

您可以手动调用 WiX Toolset 编译器和链接器,就像您已经完成或使用 MSBuild 项目一样。WiX 安装一个模板项目供 Visual Studio 使用。它被称为 WiX 引导程序。如果您不知道,Visual Studio 和 SharpDevelop 项目都是 MSBuild 项目。因此,还有另外两种构建构建的方法:通过 IDE 或在命令行中使用 msbuild.exe。

注意:如果在 Visual Studio 之前安装 WiX,Visual Studio 将不会显示四个 WiX 项目模板。在这种情况下,只需修复 WiX 安装。

于 2013-10-03T01:02:05.177 回答
0

这绝对是违反直觉的,但我想我已经找到了解决方案:

candle *.wxs
light *.wixobj -out setup.EXE -ext WixBalExtension

输出格式是EXE,而不是MSI。很简单,对吧?

顺便说一句,SharpDevelop(以及我相信的 Visual Studio)没有任何选项可以将输出文件指定为 EXE - 只有 MSI、msp 和 wixlib。

于 2013-10-02T16:45:17.663 回答