2011-03-14 36 views
0

我想設置一個自定義操作來初始化我的SQLite數據庫使用sqlite3.exe命令行工具。在命令提示符下鍵入以下內容:c:\sqlite3.exe database.db < sqlscript.sql如何重定向輸入爲customaction execommand

我的Wix自定義操作在ExeCommand屬性中分開,因爲我似乎無法脫出<。

<CustomAction Id="InitializeDatabase" FileKey="SQLiteEXE" ExeCommand="database.db < sqlscript.sql" Execute.../> 

我試過「& lt」。

我知道我可以只安裝一個空的初始化數據庫,但我很好奇如何重定向輸入。

謝謝。

回答

0

如果您確實需要調用EXE,我建議您使用WiX QuietExec自定義操作模式。更糟糕的情況下,您可以安裝.BAT文件,然後使用cmd/c foo.bat命令來調用它。那麼你不必逃避<。

否則,我會搜索替代EXE。我試圖堅持使用數據驅動的自定義操作(例如C++或C#/ DTF)。

Quiet Execution Custom Action

+0

我已經讓CAQuiets運行得更糟了。 http://stackoverflow.com/questions/5045727/caquietexec-command-string-must-begin-with-quoted-application-name – John 2011-03-14 16:54:22

1

那麼,究竟正在發生的事情時,你說這分崩離析?它是否編譯?

只是爲了讓我們在同一頁面上,是否以分號結束了XML實體。你可能是,但它沒有通過你的代碼示例。您是否使用:

&lt; 

如果不工作,你可以嘗試把命令到屬性和使用CDATA標籤,如:

<Property Id="MyCommand"> 
    <![CDATA[ 
     database.db < sqlscript.sql 
    ]]> 
</Property> 

和使用,在ExeCommand屬性:

ExeCommand="[MyCommand]" 

這可能會奏效。

+0

我再次嘗試<,它的工作原理。 – John 2011-03-15 16:31:27