将启动条件(搜索目标计算机)中的值传递给MSI中的自定义操作

时间:2017-04-21 12:28:56

标签: c# windows-installer custom-action setup-deployment

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

enter image description here

然后,我将自定义操作视图中的属性名称作为自定义数据参数传递:

/ CONFIG_EXISTS = “[CONFIG_EXISTS]”

但是当我在自定义操作代码中读取值时,其值为空,但我希望找到一个bolean,至少是字符串。

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

我在这里缺少什么?如何进入我的自定义操作c#编码搜索条件的结果?

1 个答案:

答案 0 :(得分:1)

您的搜索失败,因为它在TARGETDIR初始化之前很早就在安装中运行(请记住,TARGETDIR也可以通过提供安装文件夹的对话框进行更改)。因此,您应该根据标准Windows Installer文件夹属性重新定义搜索,例如ProgramFilesFolder,CommonFilesFolder等,完整列表如下:

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