基本上我试图构建一个可以运行devcon.exe(Windows硬件管理器的命令行版本)来检测是否安装了特定硬件的WIX msi。如果是,则安装msi A,否则安装msi B(A和B已作为独立的msi软件包存在,我们需要基于硬件自动选择性安装)。试图从WIX msi运行嵌入式工具进行选择性安装
目前我已经安装了WIX SDK,并创建了一个WIX项目,可以正确构建一个msi。我可以做简单的事情,比如执行CustomActions来打开notepad.exe,这种简单的事情。
第一个问题:我无法找到如何将文件打包到不会安装到目录中的安装程序中。我找到了它的参考,但没有明确说明如何去做。如果它不会被安装到主机驱动器中,我不必将其放入'Directory'标签内,对吗?
第二个问题:devcon.exe没有(从我能说的,纠正我,如果我错了)似乎改变它的返回值取决于它发现,可能是因为它做了很多事情,并不是'不限制硬件设备是否存在。因此,如果我可以将它嵌入并让它运行,那么我需要以某种方式将它输出到标准输出流,然后解析它以获得我正在寻找的特定值。
当然,它会更容易一些,因为我已经有一个批处理文件,可以解析并设置一个环境变量,告诉我我需要知道什么,但是,如果我可以嵌入它们两个,我如何让批处理文件引用嵌入的devcon.exe,然后让WIX读取变量,或者我可以在WIX中设置一个(或一个属性),然后从批处理文件中设置它?
也许我应该创建一个DLL自定义操作?是否有可能从dll自定义操作运行嵌入式可执行文件?然后我可以运行devcon.exe,并在那里进行所有解析,然后设置一个Wix变量或Property来选择接下来要做的事情。
第三个问题:能够从另一个msi运行一个msi。我还没有做到这一点,但我发现(http://softwareinstall.blogspot.com/2008/06/fun-with-msiembeddedchainer.html)看起来很有前途,尽管我还没有完全读过它然而。在时间的一个问题,我当然有足够的已经:)