使用managedinstaller类安装Windows服务C#inno self

时间:2011-08-22 13:17:49

标签: c# windows service

使用与此类似的代码 Inno Setup for Windows service?

在Windows 7机箱(VS 2010)上,当我尝试运行我的inno安装程序时,我得到以下结果

  

找不到具有RunInstallerAttribute.Yes属性的公共安装程序

如果使用标准Windows安装程序运行,该服务可以正常运行;这是代码:

[RunInstaller(true)]
internal static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    public static void Main(string[] args)
    {
        if (args.Count()==1)
        {
            string parameter = string.Concat(args);
            switch (parameter)
            {
                case "--install":
                    ManagedInstallerClass.InstallHelper(new string[] {Assembly.GetExecutingAssembly().Location});
                    break;
                case "--uninstall":
                    ManagedInstallerClass.InstallHelper(new string[]
                                                            {"/u", Assembly.GetExecutingAssembly().Location});
                    break;
            }
        }
        else
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
                                {
                                    new SkyLibrarian()
                                };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

有没有人对此问题有任何经验?我使用右键单击以管理员身份运行安装程序。感谢

Simon Norburn

2 个答案:

答案 0 :(得分:0)

问题在您的错误消息和粘贴的代码中已明确说明。该错误表明存在“无公共安装程序,并且可以找到RunInstallerAttribute.Yes属性”。在您的代码段中,您将Program类(RunInstaller属性设置为true)声明为 internal

将您的班级声明更改为公开,它应该正常工作。

[RunInstaller(true)]
public static class Program

答案 1 :(得分:0)

这是一个简单的错误。 ProjectInstaller文件已损坏并从解决方案中删除。它原本打算取代它,但有人'忘了'。一旦找到,问题就解决了。错误消息不具有描述性,也没有帮助。