WiX新手在这里。我很好奇这种方法是否可以使用WiX。
问题陈述......
我正在打包一些我想要针对用户在运行时输入的参数执行的SQL文件。想想连接字符串信息。用户可以输入的参数之一是他们希望安装DB的目录。
目前的解决方案(不起作用).....
要做到这一点,我要用热量包装这些文件。当它在这个文件中很糟糕时,我的一个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>
提前致谢。
答案 0 :(得分:0)
问题是我的自定义操作是使用Execute =&#34; immediate&#34;设置的。这应该是Execute =&#34; deferred&#34;。