如何创建一个InstallShield LE项目来安装Windows服务?

103

昨天我从MSDN下载了Visual Studio 2012。我发现我们在2010年中拥有的一些项目类型已经消失或改变了。目前对我来说最大的区别是删除了Windows Installer项目。现在我们被强制使用InstallShield LE(Limited Edition)。问题在于,我写了很多Windows服务,但我不知道如何设置InstallShield LE。看起来我们(我的公司)将不得不投资购买专业版许可证。

有人发现如何在InstallShield LE中安装服务吗?当使用Windows Installer项目时,你只需要设置自定义操作即可。


1
在Visual Studio部署项目中使用InstallUtil自定义操作实际上是一种非常糟糕的做法。这基本上是用一个脆弱的解决方案重新发明轮子,因为底层的创作工具没有暴露MSI的本地功能。 - Christopher Painter
11个回答

161
针对Visual Studio 2012 & InstallShield LE,需执行以下步骤:
  • 通过安装向导添加你的服务主要输出到“应用程序文件”部分。
  • 完成项目向导后,在设置项目的第二步中,双击“文件”项。

Files section

  • 右键单击你的服务主要输出,然后选择“属性”。
  • 点击“COM和.NET设置”选项卡,并在“Installer Class”复选框中打勾。 enter image description here
  • 点击“确定”
现在,一旦你构建和运行安装程序,你的服务将显示在Windows服务中。
请注意,这假设你在服务项目中添加了“项目安装程序”(右键单击服务设计表并点击“添加安装程序”)。我可以确认这适用于使用Visual Studio 2012/InstallShield LE的Windows 8.

3
能否使用InstallShield LE在对话框中向用户请求数据库连接字符串(服务器、验证以及数据库名称),并更新Windows服务配置文件? - adelb
2
这是一个相当不错的指南:http://www.c-sharpcorner.com/uploadfile/cb88b2/simple-steps-to-create-setup-file-using-install-shield-le-fr/. - Jonty
1+ Mongo - 它可以在VS 2012 / InstallShield LE和Win 7 64位上运行。 - soclose
1
Visual Studio 2013 中的安装程序项目。下载链接:http://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d用户反馈:https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3041773-bring-back-the-basic-setup-and-deployment-project参考资料:http://blogs.msdn.com/b/visualstudio/archive/2014/04/17/visual-studio-installer-projects-extension.aspx - Kiquenet
1
此选项不会在安装后启动服务。要安装并启动服务,请在解决方案资源管理器中选择 3. 配置目标系统 > 服务 - Rajeev
显示剩余4条评论

24

我最近安装了带有Install Shield LE的VS 2012。起初,在构建后(这是在设置ISLE项目并运行Install Shield Project Assistant后),我一直收到ISEXP-5036内部服务器错误。最终,我发现它试图创建MSI文件时使用的是DVD-5媒体类型,而正是在那里失败了。出于某种原因,重新从头开始创建解决方案会自动识别只构建到CD-ROM和SingleImage媒体类型,这很有效。

要纠正5036错误,请单击VS 2012中的“生成”选项卡(顶部菜单),选择“配置管理器”,然后您应该看到正在DVD-5配置上选择您的IS安装文件。将其更改为CD_ROM并单击关闭。构建/重建后,将不会出现IS 5036错误。

enter image description here


2
这可能与他的问题无关,但它解决了我的问题。谢谢!+1 - David
我也遇到了同样的问题,刚开始默认安装是DVD-5配置,但设置失败了。有了你的提示,我将其更改为单个映像并成功构建了! - Nick Bork
选择了DVD-5。简单而伟大的答案。 - beaumondo

6

使用安装程序类复选框可能适用于某些情况,但您可能会遇到以下错误:

错误1001。指定的服务已经存在

以下是解决此问题的链接中的摘录:

针对错误:错误1001。指定的服务已经存在

如果安装.NET服务的组件配置为“使用.NET安装程序类”,则会发生此错误。安装.NET服务的方法是使用组件\高级设置\服务视图,而不是“.NET安装程序类”设置。在组件\高级设置\服务视图中进行定义将创建Windows Installer ServiceControl和ServiceInstall表中的条目。这些条目由Windows Installer“InstallServices”操作用于安装服务。


你能帮忙并解释一下在哪里可以找到“Component\Advanced Settings\Services”视图吗? - pithhelmet
它在安装程序的高级版中(该死,微软为什么要去掉“设置项目”类型!)。如果您有高级版。http://community.flexerasoftware.com/showthread.php?175189-Install-windows-service - Paul Hutchinson
我发现这与安装程序名称的长度有关,即将设置项目名称更改为较短的名称,例如“Install”或“Setup”。 - Jonty

4
如果您的项目是.NET,那么可以尝试使用ServiceProcessInstaller类和InstallShield LE。要让它与InstallShield配合工作,您需要进入InstallShield的“文件”树,右键单击您的文件。然后在“COM和.NET设置”选项卡上勾选“安装程序类”复选框。我已经让它工作了,但在某些操作系统上(如Windows 2008R2)会遇到问题。您的情况可能有所不同。这里有一个例子:http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C

1
抱歉,我直到今天才看到这个消息。看起来它的答案与我接受的那个差不多。我会点赞的。 - fizch

4

我在使用这个过程中遇到了很多问题,具体如下:

  1. InstallShield下载时间很长
  2. 注册过程很繁琐
  3. 配置选项令人困惑且过于复杂
  4. 本质上,本主题的被接受的解决方案是一种黑客行为,并且它并不总是有效-请参见文档中的1001-您需要通过付费墙才能获取正确的配置选项以安装Windows服务。

对我而言,解决方案就是放弃使用InstallShield。

enter image description here

从那一点开始非常容易实现。

编辑:更新-从这里安装最新版本https://wix.codeplex.com/releases/view/115492 适用于vs 2013 / 2015


3

Visual Studio安装项目已经作为Visual Studio扩展程序重新回到VS 2013中。

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

请将您的解决方案和项目更新到VS 2013。如果您还在使用VS 2010,直接升级到VS 2013可能更好。

Installsheild LE让人感觉有些古怪,但一旦掌握了技巧,就会更容易上手。然而,我认为这个限制版是微软和Flexera销售完整版的方式。换句话说,我们首先花费大量资金购买Visual Studio,然后再向他们的合作伙伴(罪犯)购买Installsheild。这是一个不良策略,因为他们不得不在VS 2013中重新引入安装项目。


2

我已经写过这个主题:

使用Windows Installer XML增强InstallShield - Windows服务

基本上,您可以使用WiX创建一个合并模块来封装服务,然后将其添加到您的InstallShield项目中。(确保将其关联到INSTALLDIR目录,以确保文件放在预期位置)。在虚拟机上构建和测试。非常简单。


又要学习一种新技术?直到昨天,我还没有听说过WIX。我仍然对它一无所知。看起来这整个过程变得越来越困难了,而以前只需要几个点击就可以完成。 - fizch
只需要点击几下即可运行安装程序。但编写安装程序一直是更费力的工作。 - Christopher Painter
它只需要点击几下即可设置安装程序。您需要输入标题、制造商等,但不需要编写整个 XML 文档。关于 WIX,我可以告诉您的是,您显然对它了解很多。它是什么?我从哪里获取它?如何使用它?等等…… - fizch
我已经写了16年的安装程序,只需要一个单独的EXE和快捷方式就可以轻松地完成简单的安装。你可以在CodePlex上找到WiX,还有一本关于这个主题的书籍。底层技术是Windows Installer,相关文档可以在Platform SDK和MSDN上找到。 - Christopher Painter
5
认真说,这个主题已经有一本书出版了...SDK文档中也有相关内容。Chris,我们只是想把我们的2010解决方案迁移到2012,并且安装/设置正在阻碍我们。微软,请恢复VS安装程序/安装程序。 http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3041773-bring-back-the-basic-setup-and-deployment-project-?page=1 - JimSTAT

2

我刚刚遇到了一些问题,不知道在哪里添加安装程序,正如答案中提到的那样。下面是具体步骤。

双击你的Windows服务项目中的服务类 一个空白屏幕上会显示文本“要向类添加组件,请从工具箱拖动它们,并使用属性窗口设置它们的属性…” 右键单击任何位置(除了链接)并选择“添加安装程序”

再见


2

0

想把这个放在这里;

在VS 2015上,当我这样做时,我一遍又一遍地遇到了1001错误。

这个页面上的答案解释说,在更新版本(2012年之后的任何版本)上,显然你需要明确地将安装程序类选项取消选中,然后在安装程序项目的第3步下的服务部分添加你的Windows服务:

安装自定义Windows服务时出现错误1001


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接