Wix installer bundle produces corrupt “msi”

匆匆过客 提交于 2019-12-20 05:29:10

问题


Using very simple code almost same as in examples:

    <?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>

I get a setup.msi file that produced error imidiatly in start:

    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 ===

Tool dark.exe from Wix SDK says that setup.msi is corrupt and cannot be disassembled. Several times last week I managed to compile this type of bundle and msi worked well, but I can't figure out any corellation between what I was doing.

I've also tried to compile this example without using MSBuild, but directly with Wix SDK tools - still no luck - compilation finishes without errors, but resulting msi is corrupt anyway:

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

Is there something I've missed about compiling Wix bundles that prevents it from working right way?


回答1:


A Wix/Bundle is used to produce an executable that chains installers together. Therefore, the output should be given an .exe extension.

You can invoke the WiX Toolset compiler and linker manually as you appear to have done or use an MSBuild project. WiX installs a template project for Visual Studio to use. It's called WiX Bootstrapper. If you didn't know, Visual Studio and SharpDevelop projects are MSBuild projects. So, there are two more ways to build a build: Via the IDE or on the commandline with msbuild.exe.

Note: Visual Studio won't show the four WiX project templates if you install WiX before Visual Studio. In that case, simply Repair the WiX installation.




回答2:


It is absolutely counterintuitive, but I think I've found a solution:

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

The output format is EXE, not MSI. Simple, right?

BTW, SharpDevelop (as well as Visual Studio, I believe) doesn't have any option to specify the output file as EXE - only MSI, msp and wixlib.



来源:https://stackoverflow.com/questions/19134807/wix-installer-bundle-produces-corrupt-msi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!