以下のようにドライブの存在を確認するために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:\にインストールしたいということです。 MyApp \ 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">
このカスタムアクションを使用してルートドライブプロパティを設定するにはどうすればよいですか?助けてくれてありがとう!