0
ダイアログ内からファイルを選択できます(ディレクトリではありません)。ボタンをクリックした後にカスタムアクションからOpenFileDialogを呼び出す
私は 'OpenFileDialog'を呼び出すカスタムアクションを作成しました。ここで
(私は継続するために、MSIプロセスを殺さなければならない)、私はボタンコントロールからカスタムアクションを呼び出していますし、それは完全にはまり込むかのように思わ は私のカスタムアクションです:
[CustomAction]
public static ActionResult BrowseForLicenseFile(Session session)
{
try
{
session.Log("Begin BrowseForLicenseFile");
session["LICENSEFILE"] = string.Empty;
var dialog = new OpenFileDialog
{
Filter = "License File (license.dat)|license.dat",
InitialDirectory = @"C:\",
Title = "Select License File: license.dat"
};
if (dialog.ShowDialog() == DialogResult.OK)
{
session["LICENSEFILE"] = dialog.FileName;
session.Log("setting property LICENSEFILE={0}", dialog.FileName);
}
else
return ActionResult.Failure;
}
catch (Exception ex)
{
session.Log("ERROR in custom action BrowseForLicenseFile {0}", ex.ToString());
return ActionResult.Failure;
}
return ActionResult.Success;
}
ボタンのコードは(私も2最後の「公開」行をコメントし、最初の一つだけ残してみました:
ここ<Control Id="BrowseLicenseFile" Type="PushButton" Width="75" Height="17" X="274" Y="105" Text="{\VSI_MS_Sans_Serif13.0_0_0}Browse">
<Publish Event="DoAction" Value="BrowseForLicenseFileCA" Order="1" >1</Publish>
<Publish Property="LICENSEFILE" Value="[LICENSEFILE]" Order="2">1</Publish>
<Publish Event="DoAction" Value="CopyLicenseFileToCommonDirCA" Order="3">1</Publish>
</Control>
は、カスタムアクションが宣言されている方法です。
<CustomAction Id="BrowseForLicenseFileCA" BinaryKey="ServerInstallerCustomActions.CA" DllEntry="BrowseForLicenseFile" Execute="immediate" Return="check" />
<CustomAction Id="CopyLicenseFileToCommonDirCA" BinaryKey="ServerInstallerCustomActions.CA" DllEntry="CopyLicenseFileToCommonDir" Execute="immediate" Return="check" />
<Binary Id="ServerInstallerCustomActions.CA" SourceFile="$(var.Server.TargetDir)\ServerInstallerCustomActions.CA.dll" />
プロパティは、空のように宣言されています
<Property Id="LICENSEFILE" />
私は、管理者権限でコマンドプロンプトからMSIを実行しています。
これが動作しない理由を誰かが理解できたらうれしいです。
あなたはこれを試したことがありますか? http://stackoverflow.com/questions/37137579/file-browse-dialog-in-wix-installer – sttaq
ありがとう!それは今働く。私は、別のスレッドからOpenFileDialogを呼び出さなければならないのかどうかはわかりませんでした....しかし、私は編集コントロールにセットされた値を取得しませんでした.... – Dafna
あなたは 'session'オブジェクトを渡していますスレッド? – sttaq