如何重定向习惯execommand的输入

时间:2011-03-14 16:36:17

标签: wix

我正在尝试使用sqlite3.exe命令行工具设置自定义操作来初始化我的SQLite数据库。在命令提示符中,我键入以下内容:c:\sqlite3.exe database.db < sqlscript.sql

My Wix自定义操作在ExeCommand属性中崩溃,因为我似乎无法逃脱&lt;。

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

我也试过“&amp; lt”。

我知道我可以安装一个空的initiailzed数据库,但我很好奇如何重定向输入。

感谢。

2 个答案:

答案 0 :(得分:1)

那么,当你说它崩溃时究竟发生了什么?它编译?

只是为了让我们在同一页面上,您是否使用分号结束XML实体。你可能是,但它没有通过你的代码示例。你在用:

&lt;

如果这不起作用,您可以尝试将命令放入属性并使用CDATA标记,例如:

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

并在ExeCommand属性中使用它:

ExeCommand="[MyCommand]"

这可能有效。

答案 1 :(得分:0)

如果你真的需要拨打EXE,我建议使用WiX QuietExec自定义动作模式。更糟糕的情况是您可以安装.BAT文件,然后使用cmd / c foo.bat命令来调用它。那么你就不必逃避&lt;。

否则我会搜索EXE的替代方案。我尝试坚持使用在进程中运行的数据驱动的自定义操作(比如C ++或C#/ DTF)。

Quiet Execution Custom Action