2012-08-13 135 views
0

我使用WiX 3.5制作安装程序,我需要复制许多文件和文件夹。 我用heat.exe来做到这一点,它工作正常。 但是我需要在安装过程中调用bat文件,而bat文件存在于上面提到的那些文件夹中。该bat文件依赖于其他一些文件。 我可以调用批处理文件,但到那时其他文件未加载。 下面是我用于运行bat文件的自定义操作。WiX运行批处理文件,在文件复制之前

<Custom Action="InstallFeature" After="InstallFinalize"><![CDATA[ 
    (&TypicalFeature=3) AND NOT(!TypicalFeature=3) 
]]></Custom> 

需要帮助,可能是文件正在加载后,我打电话给bat文件。

感谢 拉维小号

回答

3

调用从MSI的批处理文件是真的非常糟糕的主意。 MSI是声明式的 - 您只需定义安装成功后系统应该是什么样子,如果出现问题,MSI可以回滚更改。

但是,通过使用批处理文件,Windows安装程序不知道对系统进行了哪些更改,并且无法回滚任何内容。

我会研究批处理文件正在做什么,并在WiX中或通过C++/C#中的自定义操作以及相应的回滚操作来实现它正在执行的操作。 (原生代码是最好的,但它很难,托管代码是第二好的,VBScript是最后的手段 - 但仍然比批处理文件更好)

+0

有什么办法通过WIX创建符号链接?(mklink)@ saschabeanumount – Karthick 2013-01-09 14:42:07

+0

不是我所知道的,你需要调用一个自定义动作。我不相信它是由MSI支持的(因此Wix) – saschabeaumont 2013-01-25 09:45:32