我通过Visual Studio 2010安装和部署项目设计了我的项目MSi文件,其中我添加了一个自定义操作。在自定义操作中,我打开OpenFile对话框。从Application内部工作正常。但是从安装程序中它就会消失。
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = " Dialog";
....
....
if (fdlg.ShowDialog() == DialogResult.OK)
{
tempPath = fdlg.SafeFileName;
mappingPath = fdlg.FileName;
}
}
答案 0 :(得分:1)
FileDialog.ShowDialog
需要 STA线程,而MSI则作为 MTA线程运行。为了实现这一目标,您需要启动 STA后台线程并从该线程调用对话框 。
您需要从
更改来电 DialogResult ret = fdlg.ShowDialog();
到
DialogResult ret = STAShowDialog(fdlg);