打开文件对话框无法在c#应用程序中的Installer类中运行

时间:2013-06-18 11:45:59

标签: c# installer windows-installer

我通过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;
            }
    }

1 个答案:

答案 0 :(得分:1)

来自Soumitra Mondal's WebLog

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

您需要从

更改来电

DialogResult ret = fdlg.ShowDialog();

DialogResult ret = STAShowDialog(fdlg);