c#应用程序中的安装程序类打开文件对话框不工作

本文关键字:文件 对话框 工作 应用程序 安装 程序 | 更新日期: 2023-09-27 18:18:48

我通过Visual Studio 2010安装和部署项目设计了我的项目MSi文件,其中我添加了一个自定义动作。在自定义操作中,我打开OpenFile对话框。它从应用程序内部工作很好。但是在安装程序中它挂出来了。

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;
            }
    }

c#应用程序中的安装程序类打开文件对话框不工作

摘自Soumitra Mondal的WebLog

FileDialog.ShowDialog需要STA线程,而MSI作为MTA线程运行。为了实现这一点,你需要启动一个STA后台线程,并从该线程调用对话框。

你需要改变你的呼叫

DialogResult ret = fdlg.ShowDialog(); to

DialogResult ret = STAShowDialog(fdlg);