wix – RestartManager在更新期间无法重新启动应用程序
我正在使用c#,.net 4,WIX 3.5,Windows Vista.
我通过p /调用RegisterApplicationRestart方法并处理WM_QUERYENDSESSION和WM_ENDSESSION窗口消息(我返回新的IntPtr(1);)使我的应用程序与RestartManager兼容. 如果我尝试手动更新我的应用程序,那么一切正常: >启动申请; 如果我尝试从应用程序本身更新我的应用程序,那么我遇到了问题: 1)启动申请; using (System.Diagnostics.Process p = new System.Diagnostics.Process()) { p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "msiexec"; p.StartInfo.Arguments = "/i "" + downloadPath + "" /passive"; p.StartInfo.UserName = "Administrator"; p.StartInfo.Password = securePassword; p.Start(); } 4)因为我使用的是被动模式,所以应用程序会自动关闭; 我试过了: >不为msiexec使用被动模式; 但上述都没有奏效(总是相同的结果). 必须以提升的权限启动设置可能与问题有关,因为在手动更新期间,我在事件查看器中收到警告 – 应用程序MyApp(pid 3220)无法重新启动 – 应用程序SID与Conductor SID不匹配. 如何修复(或解决)此问题,以便我可以从应用程序本身更新我的应用程序并在之后重新启动我的应用程序? 编辑 – 额外测试: >似乎没有必要响应WM_QUERYENDSESSION和WM_ENDSESSION消息,因为手动升级期间的应用程序重启没有它们,所以我们可以排除它们; 编辑2 – msi日志文件: 解决方法
假设手动过程确实没有任何问题,似乎您需要管理员权限与“更新本身”相结合会导致这些问题.我看到以下选项:
>创建批处理文件以执行更新当您想更新调用此批处理文件(具有提升的权限)时,让应用程序自行关闭…批处理文件应该等待几秒钟,然后检查应用程序是否仍在运行(并在以后关闭它)然后运行您需要运行msiexec的命令行 – 不要从msiexec中重新启动应用程序,但是在批处理文件中成功运行msiexec之后.>创建一个始终用于启动应用程序的批处理文件当需要更新时,您只需结束应用程序.批处理文件检查可用更新并应用它,在成功更新后启动应用程序或应用程序设置一些环境变量,然后由批处理文件的其余部分进行相应处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用自定义名称安装Windows服务
- windows-vista – Windows中的OS.symlink支持
- 如何在Windows上的MySQL上运行innodb_force_recovery
- .net – 清除Windows窗体中的DrawRectangle
- 如何实现windows命令提示符的tab补全
- 适用于Windows的Cisco VPN客户端
- winforms – 如何在高DPI上扩展Windows窗体按钮的图像?
- iis-7.5 – Windows进程激活服务无法启动“参数不正确”(Vi
- Windows如何决定在解析名称和连接到VPN时使用哪个DNS服务器
- 如何增加Windows 2003 NTFS分区的大小?