wix – Win7上的OpenFileDialog失败

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

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

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

非常感谢.

最佳答案

  // 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(); 
点赞