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

C# 将值从启动条件(搜索目标计算机)传递到MSI中的自定义操作,c#,windows-installer,custom-action,setup-deployment,C#,Windows Installer,Custom Action,Setup Deployment,我正在使用Visual Studio 2015创建一个MSI。我想签入TARGETDIR中已经存在的特定文件,并将搜索结果传递给c#中的自定义操作。到目前为止,我在LaunchConditions视图中创建了搜索,并相应地设置了属性 然后,我将“自定义操作”视图中的属性名称作为自定义数据参数传递: /CONFIG_EXISTS=“[CONFIG_EXISTS]” 但是当我读取自定义操作代码中的值时,它的值是空的,但我希望找到一个bolean,至少是字符串 protected override

我正在使用Visual Studio 2015创建一个MSI。我想签入TARGETDIR中已经存在的特定文件,并将搜索结果传递给c#中的自定义操作。到目前为止,我在LaunchConditions视图中创建了搜索,并相应地设置了属性

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

/CONFIG_EXISTS=“[CONFIG_EXISTS]”

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

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

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

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


PhilDW解释了为什么它不起作用。我只需将
TARGETDIR
或完整的文件路径传递给自定义操作,并检查该文件是否存在于自定义操作中。