在WiX中编辑打包文件
这里是WiX新手。我很好奇使用WiX是否可以使用这种方法 问题陈述 我正在打包一些SQL文件,希望根据用户在运行时输入的一些参数执行这些文件。考虑连接字符串信息。用户可以输入的参数之一是希望安装DB的目录 当前解决方案(不起作用) 为了做到这一点,我使用热包装这些文件。当它吸入这个文件时,我的一个SQL文件中有一些令牌,自定义操作会寻找这些令牌,以便基本上在文件中执行查找替换。问题是,虽然它确实在进行查找替换,但它是针对吸入热量的源文件而不是.msi文件中存在的文件进行查找替换的 问题1 在WiX工作流中,是否有一种方法可以通过自定义操作对存储在.cab或.msi文件中的文件进行处理?如果可能的话,有人能给我举个例子吗 问题2 如果问题1不可能,我的另一个想法是将find replace SQL片段和file install片段分解成单独的msi文件。因此,第一步是通过一个msi将我需要的所有文件分解到安装目录中。下一个msi将在文件系统上存在文件时执行SQL片段,以便我进行编辑。这听起来像是解决问题的明智方法吗?这很可能是因为我试图围绕WiX工作,而不是在这里与WiX合作 当前代码段在WiX中编辑打包文件,wix,wix3.9,Wix,Wix3.9,这里是WiX新手。我很好奇使用WiX是否可以使用这种方法 问题陈述 我正在打包一些SQL文件,希望根据用户在运行时输入的一些参数执行这些文件。考虑连接字符串信息。用户可以输入的参数之一是希望安装DB的目录 当前解决方案(不起作用) 为了做到这一点,我使用热包装这些文件。当它吸入这个文件时,我的一个SQL文件中有一些令牌,自定义操作会寻找这些令牌,以便基本上在文件中执行查找替换。问题是,虽然它确实在进行查找替换,但它是针对吸入热量的源文件而不是.msi文件中存在的文件进行查找替换的 问题1 在Wi
<Product>
<!-- This is where this will be installed-->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLFOLDER" Name="ZOLLData">
<Directory Id="SQLINSTALLFOLDER" Name="Sql" />
</Directory>
</Directory>
<!-- CUSTOM ACTION DEFINITIONS-->
<CustomAction Id="FindReplaceZEDSTextCA"
Return="check"
BinaryKey="GemstoneInPremiseInstallerCustomActions.CA.dll"
Execute="immediate"
DllEntry="FindReplaceText" />
<!-- Database Information-->
<util:User Id="SQLUser" Name="[SQLUSERNAME]" Password="[SQLPASSWORD]"/>
<sql:SqlDatabase Id="MasterDatabase" Database="master"
Server="[SQLSERVERNAME]"
User="SQLUser"/>
<InstallUISequence>
<Show Dialog="SqlConnectionDlg" After="CostFinalize" />
<Show Dialog="ProgressDlgCustom" After="SqlConnectionDlg"/>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="FindReplaceZEDSTextCA" After="InstallFiles">
</Custom>
</InstallExecuteSequence>
</Product>
<Fragment>
<DirectoryRef Id="INSTALLFOLDER" />
</Fragment>
<Fragment>
<ComponentGroup Id="SqlComponents">
<Component Id="CreateDatabase.sql" Directory="INSTALLFOLDER" Guid="6A2C6088-9302-451C-A01B-02D618D4AC27">
</Component>
</ComponentGroup>
</Fragment>
提前感谢。问题在于我的自定义操作设置为Execute=“immediate”。这应该是Execute=“deferred” 你什么时候安排你的自定义操作的?自定义操作应在文件部署到目标计算机后运行。应该在InstallExecuteSequence表中的Install files操作之后运行。我的自定义操作是在FileInstalled之后安排的,但我认为问题可能是,即使我正在等待该事件,我也看不到磁盘上的文件。这就像它解压了文件,但实际上没有写入磁盘。执行周期中是否有需要等待的事件?