gpt4 book ai didi

wix - 为 WiX Burn 捆绑多个支持文件

转载 作者:行者123 更新时间:2023-12-05 01:02:07 26 4
gpt4 key购买 nike

我有一个由供应商提供给我的第三方 MSI。然而,MSI 不是独立的,它需要多个支持文件(dll、配置文件、设备驱动程序...)才能完成安装。我尝试在 MSI 目录中不存在这些文件的情况下进行安装,并且它在安装过程中提示缺少文件。在我看来,这是构建安装程序的一种奇怪方式。无论如何,我想捆绑这个“安装”以供 Burn 使用。我以前使用过 MSIPackage,但这适用于单个文件。我将如何指定这组文件?我很想制作一个新的 MSI,其中包括来自第三方的 MSI 和其他文件,但最终我安装了一些幻影程序,这真的不是我想要的。

在此先感谢您的帮助。

编辑解决方案 :

非常感谢 Tom 提供解决此问题的方法。对于那些好奇的人,这里是我用来在 WiX 3.8 中解决这个问题的代码和步骤。

首先获取存储第三方安装程序的目录。

"%WIX%bin\heat.exe" dir "$(ProjectDir)..\ThirdParty\AppDirectory" -dr Dir_AppName -cg PAYGROUP_AppName -ag -sreg -scom -srd -var "var.AppNameDir" -t "$(ProjectDir)\ComponentToPayload.xsl" -out "$(ProjectDir)AppNamePayloadGroup.wxs"

其中 AppNameDir 是引用应用程序安装文件位置的预处理器变量。

我的转换文件与 Tom 链接的文件略有不同,但差别不大。我在我的原始 heat 文件中创建了一个组件组,然后将其用作我的 PayloadGroup 而不是 DirectoryRef。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns="http://schemas.microsoft.com/wix/2006/wi">

<xsl:template match="/">
<Wix>
<Fragment>
<xsl:apply-templates select="*" />
</Fragment>
</Wix>
</xsl:template>

<xsl:template match="//wix:ComponentGroup">
<PayloadGroup>
<xsl:attribute name="Id">
<xsl:value-of select="@Id"/>
</xsl:attribute>
<xsl:apply-templates select="*" />
</PayloadGroup>
</xsl:template>

<xsl:template match="//wix:File">
<Payload>
<xsl:attribute name="SourceFile">
<xsl:value-of select="@Source"/>
</xsl:attribute>
</Payload>
</xsl:template>

</xsl:stylesheet>

然后我为组件创建了一个片段并引用了 Payload 组
  <Fragment>
<PackageGroup Id="PCKGRP_AppName">
<MsiPackage
SourceFile="$(var.AppNameDir)\app.msi">
<MsiProperty Name="PropertyName1" ="Value1"/>
<MsiProperty Name="PropertyName2" ="Value2"/>
<MsiProperty Name="PropertyName3" ="Value3"/>
<PayloadGroupRef Id="PAYGROUP_AppName"/>
</MsiPackage>
</PackageGroup>
</Fragment>

然后最后引用链中的组
    <Chain>
...
<PackageGroupRef Id="PCKGRP_AppName"/>
...
</Chain>

最佳答案

在 MsiPackage 元素内部使用一堆 Payload 元素(或将有效负载放在其他地方并使用 PayloadGroupRef )。

作为补偿,您的 bootstrap 可能会获得更好的压缩,因为 MsiPackage 开始爆炸,因为双重压缩在时间和空间上可能效率低下。

关于wix - 为 WiX Burn 捆绑多个支持文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com