我的安装程序需要打开文件浏览对话框。由于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/