Win7上的OpenFileDialog失败

时间:2010-09-16 16:10:04

标签: wix wix3.5

我的安装程序需要打开文件浏览对话框。由于WIX没有提供文件浏览对话框,我编写了一个C#dll,其中包含一个在自定义操作调用时调用标准OpenFileDialog的方法。然而,虽然这在Win2003中工作正常,但在Windows 7上运行时,自定义操作会挂起。它似乎会在ShowDialog()调用之后停止。作为测试,我编写了一个单独的Windows窗体应用程序,其中包含一个对话框和按钮,用于调用OpenFileDialog,并且正如预期的那样,工作正常。我只是不能让我的msi中出现OpenFileDialog!

我怀疑这可能是一个安全问题所以我从msiexec运行安装程序,以管理员身份打开但没有区别!

有没有人有任何想法如何解决这个问题?

非常感谢。

2 个答案:

答案 0 :(得分:2)

  // create a new thread with appropriate apartment state to launch UI 
  OpenFileDialog fileBrowser = new OpenFileDialog(); 
  Thread worker = new Thread(fileBrowser.Show); 
  worker.SetApartmentState(ApartmentState.STA);  // <-- here is the magic code 
  worker.Start(); 
  worker.Join(); 

答案 1 :(得分:0)

当我尝试这个时,我发现它正在后面突然出现其他MSI窗口。直到我弄明白这一点,它看起来就像一个悬挂。

对于这个以及其他一大堆原因,我最终编写了一个定制的安装机制并放弃了MSI。最终用户和他们的系统更加友好。