我的安装程序需要打开文件浏览对话框。由于 WIX 没有提供文件浏览对话框,因此我编写了一个 C# dll,其中包含一个在由自定义操作调用时调用标准 OpenFileDialog 的方法。然而,虽然这在 Win2003 中运行良好,但自定义操作在 Windows 7 上运行时只是挂起。它似乎一直到 ShowDialog() 调用然后停止。作为测试,我编写了一个单独的 Windows 窗体应用程序,其中包含一个对话框和按钮来调用 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/