Wix 安装程序中的文件浏览对话框
File Browse Dialog in Wix Installer
我正在使用 Wix Installer v3.9 创建安装程序。我想在安装完成后弹出一个文件浏览对话框。用户可以 select 一个目录中的多个文件。然后这些文件路径必须作为命令行参数传递给 exe。
我怎样才能做到这一点? Wix BrowseDlg 仅允许 select 目录。
感谢任何帮助。
据我所知,wix 工具集没有任何文件浏览控件。
所以我通常使用 c# Custom Action 来完成这项工作。
试用此示例并根据您的需要进行自定义。
using WinForms = System.Windows.Forms;
using System.IO;
using Microsoft.Deployment.WindowsInstaller;
[CustomAction]
public static ActionResult OpenFileChooser(Session session)
{
try
{
session.Log("Begin OpenFileChooser Custom Action");
var task = new Thread(() => GetFile(session));
task.SetApartmentState(ApartmentState.STA);
task.Start();
task.Join();
session.Log("End OpenFileChooser Custom Action");
}
catch (Exception ex)
{
session.Log("Exception occurred as Message: {0}\r\n StackTrace: {1}", ex.Message, ex.StackTrace);
return ActionResult.Failure;
}
return ActionResult.Success;
}
private static void GetFile(Session session)
{
var fileDialog = new WinForms.OpenFileDialog { Filter = "Text File (*.txt)|*.txt" };
if (fileDialog.ShowDialog() == WinForms.DialogResult.OK)
{
session["FILEPATH"] = fileDialog.FileName;
}
}
我正在使用 Wix Installer v3.9 创建安装程序。我想在安装完成后弹出一个文件浏览对话框。用户可以 select 一个目录中的多个文件。然后这些文件路径必须作为命令行参数传递给 exe。 我怎样才能做到这一点? Wix BrowseDlg 仅允许 select 目录。
感谢任何帮助。
据我所知,wix 工具集没有任何文件浏览控件。 所以我通常使用 c# Custom Action 来完成这项工作。
试用此示例并根据您的需要进行自定义。
using WinForms = System.Windows.Forms;
using System.IO;
using Microsoft.Deployment.WindowsInstaller;
[CustomAction]
public static ActionResult OpenFileChooser(Session session)
{
try
{
session.Log("Begin OpenFileChooser Custom Action");
var task = new Thread(() => GetFile(session));
task.SetApartmentState(ApartmentState.STA);
task.Start();
task.Join();
session.Log("End OpenFileChooser Custom Action");
}
catch (Exception ex)
{
session.Log("Exception occurred as Message: {0}\r\n StackTrace: {1}", ex.Message, ex.StackTrace);
return ActionResult.Failure;
}
return ActionResult.Success;
}
private static void GetFile(Session session)
{
var fileDialog = new WinForms.OpenFileDialog { Filter = "Text File (*.txt)|*.txt" };
if (fileDialog.ShowDialog() == WinForms.DialogResult.OK)
{
session["FILEPATH"] = fileDialog.FileName;
}
}