WiX的新手在這裏。我很好奇這種方法是否可以使用WiX。編輯在維克斯打包文件
問題陳述......
我打包,我要執行對一些參數,用戶將在運行時輸入一些SQL文件。想想連接字符串信息。用戶可以輸入的參數之一是他們想要安裝數據庫的目錄。
當前解決方案(不工作).....
要做到這一點我使用的熱包裝這些文件。當它吸入這個文件時,我的一個SQL文件中有一些令牌,自定義動作查找基本上在文件中執行查找替換。問題是thatwhile這的確是做了替換找到它做他們針對存在.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>
感謝。
你什麼時候安排您的自定義操作?自定義操作應在文件部署到目標機器後運行。應該在InstallExecuteSequence表中的安裝文件操作之後運行。 –
我的自定義操作計劃在FilesInstalled後,但我認爲問題可能是,即使我正在等待該事件,我沒有看到磁盤上的文件。這就像它解壓縮文件,但實際上沒有寫入磁盤。執行週期中是否還有事件需要等待? – Brian