我在 C# 中编写了一个自定义操作来检查驱动器是否存在,如下所示,我被困在两者之间。
[CustomAction]
public static ActionResult MySimpleAction(Session session)
{
if (Directory.Exists("F:\\"))
{
return ActionResult.Success;
}
else
{
return ActionResult.Failure;
}
}
在 wxs 文件中,我正在运行自定义操作,如下所示。
<Binary Id="myAction" SourceFile="MyCustomAction.CA.dll" />
<CustomAction Id="myActionId"
BinaryKey="myAction"
DllEntry="MySimpleAction"
Execute="immediate"
Return="check" />
<InstallExecuteSequence>
<Custom Action="myActionId" After="InstallInitialize" > </Custom>
</InstallExecuteSequence>
如果我在有 F:\ 驱动器的目标机器上运行 msi,则安装成功,如果目标机器没有 F:\ 驱动器,则安装失败,我收到错误,因为“安装向导因错误而提前结束.你的系统没有被修改过。 ”
我在这里要做的是,如果 F:\ 驱动器在目标计算机中可用(我的自定义操作成功),我想将我的根驱动器设置为 F:\,并且我想将应用程序安装在 F:\我的应用程序\Bin
<Property Id="ROOTDRIVE"><![CDATA[F:\]]></Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLFOLDERLOCATION" Name="MyApp">
<Directory Id="INSTALLLOCATION" Name="Bin">
如果 F:\ 驱动器在目标计算机中不可用(我的自定义操作失败),我想将我的根驱动器设置为 C:\,并且我想安装在 C:\MyApp\Bin
<Property Id="ROOTDRIVE"><![CDATA[C:\]]></Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLFOLDERLOCATION" Name="MyApp">
<Directory Id="INSTALLLOCATION" Name="Bin">
如何使用此自定义操作设置根驱动器属性?谢谢您的帮助!