WiX新手在这里。我很好奇这种方法是否可以使用 WiX。
问题陈述...
我正在打包一些我想针对用户将在运行时输入的参数执行的 SQL 文件。想想连接字符串信息。用户可以输入的参数之一是他们希望安装数据库的目录。
当前解决方案(不起作用).....
为此,我使用热量打包这些文件。当它吸入这些文件时,我的一个 SQL 文件中有一些标记,自定义操作查找这些标记基本上是在文件中进行查找替换。问题是,虽然它确实在进行查找替换,但它是针对吸收热量的源文件而不是.msi 文件中存在的文件进行的。
问题1...
在 WiX 工作流程中,是否可以通过自定义操作对存储在 .cab 或 .msi 文件中的文件进行处理?如果可能的话,有人可以给我看一个例子吗?
问题2 。. .
如果问题 1 不可能,我的另一个想法是将查找替换 SQL 片段和文件安装片段分解为单独的 msi 文件。所以第一步是通过一个 msi 将我需要的所有文件分解到安装目录中。下一个 msi 将执行 SQL 片段,因为此时文件系统上存在文件供我进行编辑。这听起来像是解决问题的明智方法吗?很可能是我正在尝试解决 WiX 而不是在这里使用 WiX。
当前的代码片段
<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>
提前致谢。