将启动条件(搜索目标机器)中的值传递给MSI中的自定义操作
问题描述:
我正在使用Visual Studio 2015创建MSI。我想检查TARGETDIR中已存在的某个文件,并将搜索结果传递给一个自定义在C#中的行动。到目前为止,我在启动条件视图中创建搜索并相应地设置属性。将启动条件(搜索目标机器)中的值传递给MSI中的自定义操作
然后,我在自定义操作通过属性名称视图定制数据参数:
/CONFIG_EXISTS = “[CONFIG_EXISTS]”
但是,当我读了我的自定义的值行动代码,它的值是空的,但我期望找到一个布尔值,至少是字符串。
protected override void OnAfterInstall(IDictionary savedState){
var existingConfig = Context.Parameters["CONFIG_EXISTS"]; // Always has "" as value
.... // Other code
我在这里错过了什么?如何获取我的自定义操作c#编码搜索条件的结果?
答
由于在TARGETDIR初始化之前(并记住TARGETDIR也可以通过提供安装文件夹的对话框进行更改),因此它在安装的早期阶段就会运行,因此您的搜索失败。所以,你应该重新定义标准的Windows安装程序文件夹的属性,如ProgramFilesFolder,CommonFilesFolder等,完整的列表在这里的条件搜索:
PhilDW解释了为什么这是行不通的。我只需将'TARGETDIR'或完整的文件路径传递给自定义操作,并检查文件是否存在于自定义操作本身中。 – zett42