2016-02-08 151 views
0

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> 

感謝。

+0

你什麼時候安排您的自定義操作?自定義操作應在文件部署到目標機器後運行。應該在InstallExecuteSequence表中的安裝文件操作之後運行。 –

+0

我的自定義操作計劃在FilesInstalled後,但我認爲問題可能是,即使我正在等待該事件,我沒有看到磁盤上的文件。這就像它解壓縮文件,但實際上沒有寫入磁盤。執行週期中是否還有事件需要等待? – Brian

回答

0

的問題是我的自定義操作設置與執行=「立竿見影」。這應該是Execute =「deferred」。