【问题标题】:WiX burn bootstrapping x86 and x64 msi's into single No-UI bootstrapperWiX 将引导 x86 和 x64 msi 刻录到单个 No-UI 引导程序中
【发布时间】:2013-02-01 11:18:09
【问题描述】:

我有我的安装程序 .msi 的 x64 和 x86 版本,并且想要发布一个可执行文件,它只检查机器架构并运行 x86/x64 MSI。 MSI 基本相同,它们安装相同的 AnyCPU 文件,我将它们捆绑在一个共享的 .cab 文件中,以免安装程序的大小加倍。

到目前为止,我已经尝试过 WiX Burn,它会弹出一个我不想要的 GUI(我只想使用 MSI GUI),我尝试通过 /silent 标志禁用刻录 GUI - 这会传播此标志到 MSI,因此它会禁用 MSI 的所有 GUI(不是我想要的)。

当我说Burn bootstrapper 没有默认的No-GUI 版本时我认为我是正确的,要创建一个你必须自己编辑源代码?这听起来像是一个巨大的缺失功能?

我还尝试过 DotNetInstaller,它有自己的一系列问题,用户界面令人困惑。我也尝试过 setupbld,它不支持带有外部 cab 的 MSI。

【问题讨论】:

    标签: installation wix 32bit-64bit bootstrapper burn


    【解决方案1】:

    对于体系结构检测,您可以使用 MsiPackage 元素中的 InstallCondition 属性。

    简单来说试试:

    <MsiPackage SourceFile="..\Example\bin\Release\x86\example.msi" Compressed="no" InstallCondition="NOT VersionNT64" />
    <MsiPackage SourceFile="..\Example\bin\Release\x64\example.msi" Compressed="no" InstallCondition="VersionNT64" />
    

    来源: http://wix.sourceforge.net/manual-wix3/wix_xsd_msipackage.htm

    【讨论】:

      【解决方案2】:

      正如其他答案所建议的那样,您可以使用 VERSIONNT64 变量来检查您正在安装的平台。

      Wix Burn 通过传递命令行参数“-q”支持 NO-GUI 或安静模式。

      除此之外,它还支持以下其他参数:

      wixstdba 仅支持“标准包开关”:

      -q, -quiet, -s, -silent = silent install 
      -passive = progress bar only install 
      -norestart = suppress any restarts 
      -forcerestart = restart no matter what (I don't know why this is still around) 
      -promptrestart = prompt if a restart is required (default) 
      -layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD) 
      -l, -log = log to a specific file (default is controled by bundle developer) 
      -uninstall = uninstall 
      -repair = repair (or install if not installed) 
      -package,-update = install (default if no -uninstall or -repair) 
      

      输入您的 wixburnexename /?获取您机器上的详细信息。

      【讨论】:

        【解决方案3】:

        您可以使用自定义操作和Burn Built-in Variables 来检查您是在 X86 还是 x64 上运行。基于此,您可以执行/安排操作列表。

        <InstallExecuteSequence>
           <Custom Action="Windows32bitInstall" After="InstallFiles">NOT VersionNT64</Custom>
           <Custom Action ="Windows64bitInstall" After="InstallFiles" >VersionNT64</Custom>
           <Custom Action="InstallHelp" After="Windows64bitInstall">NOT Installed</Custom>
        </InstallExecuteSequence>
        

        这将以相同的高度执行。

        <CustomAction Id="InstallHelp" Directory="ProgramFilesFolder"
                  Execute="deferred" Impersonate="no" Return="ignore"
                  ExeCommand="[HELPDIR]\help.exe /log" />
        

        【讨论】:

        • WIX bundle/bootstrapper 中没有自定义操作。它不是 MSI,也没有 MSI 属性/功能,它是一个有助于链接的 exe/应用程序!
        猜你喜欢
        • 2013-03-02
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多