2017-04-21 34 views
1

我正在使用Visual Studio 2015创建MSI。我想检查TARGETDIR中已存在的某个文件,并将搜索结果传递给一个自定义在C#中的行动。到目前为止,我在启动条件视图中创建搜索并相应地设置属性。将启动条件(搜索目标机器)中的值传递给MSI中的自定义操作

enter image description here

然后,我在自定义操作通过属性名称视图定制数据参数:

/CONFIG_EXISTS = “[CONFIG_EXISTS]”

但是,当我读了我的自定义的值行动代码,它的值是空的,但我期望找到一个布尔值,至少是字符串。

protected override void OnAfterInstall(IDictionary savedState){ 
    var existingConfig = Context.Parameters["CONFIG_EXISTS"]; // Always has "" as value 
    .... // Other code 

我在这里错过了什么?如何获取我的自定义操作c#编码搜索条件的结果?

+0

PhilDW解释了为什么这是行不通的。我只需将'TARGETDIR'或完整的文件路径传递给自定义操作,并检查文件是否存在于自定义操作本身中。 – zett42

回答

1

由于在TARGETDIR初始化之前(并记住TARGETDIR也可以通过提供安装文件夹的对话框进行更改),因此它在安装的早期阶段就会运行,因此您的搜索失败。所以,你应该重新定义标准的Windows安装程序文件夹的属性,如ProgramFilesFolder,CommonFilesFolder等,完整的列表在这里的条件搜索:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties

相关问题