1

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

1 回答 1

1

来自Soumitra Mondal 的 WebLog

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

你需要改变你的电话从

DialogResult ret = fdlg.ShowDialog();

DialogResult ret = STAShowDialog(fdlg);
于 2013-06-18T14:51:40.183 回答