如何创建仅显示网络共享的wix DirectoryCombo元素?

如何创建仅显示网络共享的wix DirectoryCombo元素?,directory,wix,network-share,Directory,Wix,Network Share,wixDirectoryCombo元素具有属性Remote和Fixed。通过将Remote属性设置为no,网络共享将从此元素创建的下拉列表中删除。同样,将Fixed属性设置为no会产生一个排除本地驱动器的列表。我的问题是我不能限制列表只显示网络共享。如果Remote设置为yes,而Fixed设置为no,我希望下拉列表可以实现我想要的功能,即仅显示网络共享。但该列表中的默认条目始终显示其property属性分配给的属性值 有没有办法阻止显示此默认条目?有。在运行该对话框之前,您可以通过将网络驱动器

wix
DirectoryCombo
元素具有属性
Remote
Fixed
。通过将
Remote
属性设置为
no
,网络共享将从此元素创建的下拉列表中删除。同样,将
Fixed
属性设置为
no
会产生一个排除本地驱动器的列表。我的问题是我不能限制列表只显示网络共享。如果
Remote
设置为
yes
,而
Fixed
设置为
no
,我希望下拉列表可以实现我想要的功能,即仅显示网络共享。但该列表中的默认条目始终显示其
property
属性分配给的属性值


有没有办法阻止显示此默认条目?

有。在运行该对话框之前,您可以通过将网络驱动器值中的任何一个设置为该DirectoryCombo属性来防止出现这种情况。编写自定义操作以读取网络驱动器,并将任意一个驱动器值设置为该目录属性,并在InstallUISequence中计划自定义操作

[CustomAction]
    public static ActionResult CustomAction1(Session session)
    {       
        DriveInfo[] drives = DriveInfo.GetDrives();
        foreach (DriveInfo drvInfo in drives)
        {
            if (drvInfo.DriveType == DriveType.Network)
            {
                session["SHARED_DRIVE"] = drvInfo.Name;
                break;
            }
        }
        return ActionResult.Success;
    }

  <Binary Id="SharedDrive" SourceFile="TestProject.CA.dll" />
  <CustomAction Id="SHAREDDRIVE" BinaryKey="SharedDrive" DllEntry="CustomAction1" Return="check" />

 <InstallUISequence>
     <Custom Action="SHAREDDRIVE" After="AppSearch">Not Installed</Custom>
 </InstallUISequence>
[自定义操作]
公共静态操作结果CustomAction1(会话)
{       
DriveInfo[]drives=DriveInfo.GetDrives();
foreach(驱动器中的DriveInfo drvInfo)
{
if(drvInfo.DriveType==DriveType.Network)
{
会话[“共享_驱动器”]=drvInfo.Name;
打破
}
}
返回操作结果。成功;
}
未安装

正是我所需要的!只是为了让不知道如何使用此代码的人明白:您必须做的最后一件事是引用
DirectoryCombo
元素中的public
SHARED\u DRIVE
变量,如下所示: