捆绑WiX Burn的多个支持文件
发布时间:2020-12-13 23:24:54 所属栏目:Windows 来源:网络整理
导读:我有一个供应商提供给我的第三方MSI.但是,MSI并不孤立,它需要多个支持文件(dll,配置文件,设备驱动程序……)才能完成安装.我试图安装没有这些文件存在于MSI目录中,它抱怨安装过程中丢失的文件.在我看来,这是一种构建安装程序的奇怪方法.无论如何,我想捆绑这个
我有一个供应商提供给我的第三方MSI.但是,MSI并不孤立,它需要多个支持文件(dll,配置文件,设备驱动程序……)才能完成安装.我试图安装没有这些文件存在于MSI目录中,它抱怨安装过程中丢失的文件.在我看来,这是一种构建安装程序的奇怪方法.无论如何,我想捆绑这个“装置”以供Burn使用.我之前使用过MSIPackage,但这适用于单个文件.我该如何指定这组文件?我很想制作一个新的MSI,其中包括来自第三方的MSI以及其他文件,但后来我最终安装了一些幻像程序,这真的不是我想要的.
在此先感谢您的帮助. 用解决方案编辑: 非常感谢Tom提供此问题的关键.对于那些好奇的人来说,我在WiX 3.8中用来解决这个问题的代码和步骤. 首先收获存储第三方安装程序的目录. "%WIX%binheat.exe" dir "$(ProjectDir)..ThirdPartyAppDirectory" -dr Dir_AppName -cg PAYGROUP_AppName -ag -sreg -scom -srd -var "var.AppNameDir" -t "$(ProjectDir)ComponentToPayload.xsl" -out "$(ProjectDir)AppNamePayloadGroup.wxs" 其中AppNameDir是引用应用程序安装文件位置的预处理器变量. 我的转换文件与Tom链接的文件略有不同,但并不多.我在我的原始热文件中创建了一个组件组,然后将其用作我的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).
作为补偿,由于MsiPackage开始爆炸,你的引导程序可能会得到更好的压缩,因为双重压缩在时间和空间上都是低效的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cmd – 如何为特定应用程序强制传出ip? ForceBindIp似乎不
- windows-server-2008 – Windows Server 2008允许用户查询网
- .net – 如何导出CIL DLL中的方法,以便本地程序可以调用它?
- winapi – 如何在调整win32窗口大小时绘制OpenGL内容
- Windows – 从Microsoft PKI中的CDP和AIA中删除LDAP
- Clickonce App不以Windows 1803开头
- winapi – 在Win32中有双重右键单击吗?
- windows – 使用BAT从网络共享复制
- windows安装MySQL Community Server 8.0.11 步骤-实践
- Windows Azure如何执行负载平衡?
推荐文章
站长推荐
热点阅读