执行使用Visual Studio创建的* .msi文件时出错

时间:2016-01-14 14:24:40

标签: c# visual-studio visual-studio-2010 visual-studio-2012 visual-studio-2013

我在visual studio 2013中使用c#创建了一个窗口服务。 Windows服务运行正常。

当我创建一个安装项目并在不同的计算机上运行.msi文件时,它会给我一个错误

Error

我做的步骤:

1.右键点击解决方案 - >其他项目类型 - > Visual Studio安装程序 - 安装项目

2.添加名称文件系统编辑器 - >选择应用程序文件夹 - >右键单击 - >添加 - >项目输出 - >弹出添加项目输出组   项目:选择具有主要输出的项目

File system editor

  1. 选择自定义操作编辑器 - >安装 - >右CLick - >添加自定义操作 - >选择Application文件夹和Project输出。
  2. 重复安装

    Custom Actions Editor

    1. 构建安装程序。
    2. .msi和setup.exe文件在文件夹中创建。

      我看到了https://www.youtube.com/watch?v=cp2aFNtcZfk教程来做到这一点。

      可以告诉我如何解决这个问题。

      由于

      编辑:我的项目中有projectInstaller

      namespace certify4byd_ver2._0
      {
      partial class ProjectInstaller
      {
      
          private System.ComponentModel.IContainer components = null;
      
          protected override void Dispose(bool disposing)
          {
              if (disposing && (components != null))
              {
                  components.Dispose();
              }
              base.Dispose(disposing);
          }
      
      
          private void InitializeComponent()
          {
              this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
              this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
              // 
              // serviceProcessInstaller1
              // 
              this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService;
              this.serviceProcessInstaller1.Password = null;
              this.serviceProcessInstaller1.Username = null;
      
              // 
              // serviceInstaller1
              // 
              this.serviceInstaller1.Description = "Quick Source specific development to allow ftp files to be send to ByDesign envir" +
      "onment";
              this.serviceInstaller1.DisplayName = "Quick Source Certify4ByDesign";
              this.serviceInstaller1.ServiceName = "qs_certify4byd_v2.0";
              this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
              this.serviceInstaller1.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_AfterInstall);
              // 
              // ProjectInstaller
              // 
              this.Installers.AddRange(new System.Configuration.Install.Installer[] {
              this.serviceProcessInstaller1,
              this.serviceInstaller1});
      
          }
      
          #endregion
      
          private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
          private System.ServiceProcess.ServiceInstaller serviceInstaller1;
          }
      }
      

1 个答案:

答案 0 :(得分:0)

从错误消息中,您似乎已将应用程序的文件复制到目标计算机,就是这样。如果您正在编写Windows服务,则必须执行其他步骤才能获取MSI程序包以将其作为服务进行安装。

您的项目是否在某个地方有ServiceInstaller课程?这就是.NET希望您安装服务的方式。

至少根据我的经验,Visual Studio Installer项目可能不是最好的方法。查看Debuggable Installable Service,Visual Studio的扩展,允许您创建自行安装的Windows服务(带有命令行参数),这些服务也是开箱即用的可调试控件。在编写服务时,这对我来说是一种救星,因为你没有弄乱ServiceInstaller,一切都为你完成。

我的另一个建议是,除了使用Debuggable Installable Service之外,还要查看WiX Toolset。它需要安装在您计划开发产品的任何地方(如果您在源代码管理下进行开发会有点痛苦),但它也允许您安装服务并让您更精细地控制应用程序的运行方式安装。

我不推荐使用Visual Studio Installer项目。