我的安装程序需要打开文件浏览对话框。由于WIX没有提供文件浏览对话框,因此我编写了一个C#dll,其中包含一个由Custom Action调用时调用标准OpenFileDialog的方法。但是,尽管这在Win2003中运行良好,但自定义操作只是在Windows 7上运行时挂起。它似乎达到了ShowDialog()调用然后停止的程度。作为测试,我编写了一个单独的Windows Forms应用程序,该应用程序具有一个对话框和按钮来调用OpenFileDialog,并且按预期的那样可以正常工作。我只是无法让OpenFileDialog从我的msi中出现!

我怀疑这可能是安全问题,因此我从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();

关于wix - OpenFileDialog在Win7上失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3728535/

10-12 19:20