使用InstallAllUsers == true从安装程序调用时,Process.Start(someUri)失败

时间:2011-11-25 04:06:44

标签: visual-studio-2010 windows-installer custom-action process.start

当我创建一个使用自定义安装程序类并在该自定义安装程序类中放置Process.Start(someUri);的Windows Installer安装项目时,如果安装项目属性{{1},则对Process.Start()的调用将失败}设置为true。如果我将InstallAllUsers设置为false,则Process.Start()按照我的预期工作。当Start()失败时,不会抛出任何异常,并且仍然执行对Start()的调用后的任何代码,但是我指定的uri没有打开。

我没有太多运气找到解释。谁能解释为什么会发生这种情况?谢谢!

修改 我越来越怀疑这是一个特定于Chrome的异常。 Process.Start()按预期与IE一起工作。由于InstallAllUsers意味着机器级安装,我现在想知道Chrome是否安装到用户特定的AppData目录是问题的一部分(或全部)。

1 个答案:

答案 0 :(得分:1)

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.DIAGNOSTICS.PROCESS);k(PROCESS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true

发现了这个问题。帮助中Process类的示例具有以下注释:

// url's are not considered documents. They can only be opened

// by passing them as arguments.

这意味着尝试使用“默认浏览器”会导致问题。需要为Urls

指定应用程序(IExplorer.exe)