我们正在为 Windows Server 2008 更新我们产品的 .msi 包的构建。我们安装的主要组件是作为 Windows 服务运行的应用程序。还有一个配置应用程序在安装期间运行以设置注册表项以供服务使用。
服务和配置应用程序依赖于 Microsoft C/C++ 运行时和 MFC,它们作为合并模块包含在 .msi 中。C/C++ 运行时和 MFC 的程序集在 InstallFinalize 期间提交,这似乎阻止了使用 Windows Installer 提供的机制启动服务(这是正确的吗?)当然,我们看到并排错误与 at如果在 InstallFinalize 之前运行,则至少配置应用程序。
我们采用的方法是在 InstallFinalize 之后将配置应用程序作为“提交”自定义操作运行,并让该应用程序启动服务。这要求应用程序以提升的特权执行(为此我们使用包含 trustInfo 部分的清单。)这进一步要求 .msi 配置为在没有模拟的情况下运行此应用程序(否则会混淆特权提升。)
这是一种可接受的方法吗?这有多大可能是面向未来的?有什么需要注意的问题吗?
看来这是别人遇到过的问题:
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg12666.html
是否有官方(或非官方)接受的方式来处理此类问题?
作为对此的补充,是否有任何方法可以确保在安装过程中作为自定义操作运行的应用程序在启动时获得焦点?以这种方式启动的应用程序似乎总是在安装程序后面弹出并且安装程序保持焦点,这不是一个特别用户友好的效果。
非常感谢,
布鲁斯。