我读过关于MSI安装的每一个计算器文章一个服务,但我无法找到解决我的问题:VS安装项目 - 安装组件到GAC并开始使用它们都在同一个安装
我有一个有5个项目,VS2010解决方案的所有目标.NET 2.0:
- DLL A,没有项目引用
- DLL B,引用DLL
- Windows窗体应用程序,引用的DLL乙
- Windows服务,引用的DLL乙
- 安装项目
DLL A和DLL B被设置为被安装到GAC在安装时。我想在安装完成后启动服务,但根据我读过的内容,程序集只有在最后一步才会注册。我已经试图开始在我的ServiceInstaller类的AfterInstall事件服务证明了这一点,我得到以下错误:
Error 1001. Could not load file or assembly 'DLL_B', version 1.0.0.1, Culture=neutral, PublicKeyToken=5e297270603814f4' or one of its dependencies. The system could not find the file specified.
但当然,一旦安装完成后,我可以手动启动该服务,它运行精细。另外,在Windows XP中,我通常可以在应用程序启动时启动服务(我有一个Launch Application复选框作为安装程序的最后一步)。但是在Windows 7中,当时不再提升权限,并且启动服务会引发错误。
如何在不强制重启的情况下实现服务的安装和启动?引用我的客户:“现在2011年,这不应该是必要的。”,我非常同意。
提前致谢。
在InstallFinalize之后计划的任何CA都不具有提升的权限。如果UAC关闭,这可能会起作用,但这不是一个好习惯,IMO。 – 2011-04-14 12:06:32
这是真的。但是可以通过提升安装程序UI(例如使用引导程序)或使用请求提升的应用程序清单的EXE自定义操作轻松避免。 – 2011-04-14 12:12:14
我标记了Cosmin的答案是正确的,因为它是最接近的,只是因为他说的这部分“这不能用VS设置项目来完成,但有很多选择。”我选择使用InnoSetup。我发现它非常简单,而且对我的需求来说是完美无缺的。安装程序尖叫得很快,完全符合我需要的。 – 2011-04-14 14:44:48