Windows服务安装问题

时间:2009-10-01 14:04:13

标签: .net windows-services installation

我有一个受{smartassembly}保护的.NET Windows服务器工作正常,但我无法安装受保护的版本。当我进行测试时,服务已经安装,然后我将受保护的版本复制到原始版本上。

{smartassembly}网站上有关于Windows服务(How to protect Windows services?)的一些说明。我按照第一条建议,使用CodeProject文章(Windows Services Can Install Themselves)将安装程序嵌入到服务中。自助安装正常,直到服务受到保护。

安装日志文件显示以下错误消息:

  

尝试在C:\ path-to-service \ service.exe程序集中查找安装程序时发生异常。   System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。

我回去尝试删除任何保护选项,说它们可能会导致反射问题。我仍然有同样的错误。

然后我尝试关闭所有保护选项。仍然是同样的错误。

我已向{smartassembly}支持发送了一封电子邮件,但尚未收到回复。它只有24小时,但我认为有人在这里可能会遇到这个问题。

有什么想法吗?

编辑#1

我知道我可以编写另一个使用Windows API来安装服务的exe,但我想尽可能让内置安装工作。

2 个答案:

答案 0 :(得分:1)

好的,我现在觉得有点蠢。我想出了这个问题,所以也许它可以帮助那些拥有相同脑屁的人。

受保护的程序集将写入与源程序集不同的文件夹,并且该文件夹中缺少项目引用的程序集之一。 DOH!

答案 1 :(得分:-4)

自助安装者很糟糕。 Visual Studio“安装”项目也是如此。相反,使用WiX编写适当的安装程序。