如何创建InstallShield LE项目以安装Windows服务?


104

昨天在MSDN上发布时,我下载了Visual Studio 2012。我注意到我们在2010年拥有的一些项目类型已经消失或有所不同。对我而言,最大的区别是删除了Windows Installer项目。现在,我们被迫使用InstallShield LE(限量版)。这里的问题是我编写了大量Windows服务,但看不到如何设置InstallShield LE。看来我们(我的公司)将不得不投资购买专业版的许可证。

有没有人找到在InstallShield LE中安装服务的方法?使用Windows Installer项目时,只需设置自定义操作。


1
在Visual Studio部署项目中使用InstallUtil自定义操作实际上是一个非常糟糕的做法。它基本上是用一种脆弱的解决方案来重塑轮子,因为底层的创作工具并未展示MSI的本机功能。
克里斯托弗·画家

Answers:


161

对于Visual Studio 2012和InstallShield LE,请执行以下操作:

  • 运行InstallShield项目助手,然后将服务的主要输出添加到“应用程序文件”部分。
  • 完成项目助手后,双击安装项目第二步下的“文件”项。

文件部分

  • 右键单击服务的主要输出,然后转到属性。
  • 单击“ COM和.NET设置”选项卡,然后在“安装程序类”复选框中进行检查。 在此处输入图片说明
  • 点击确定

现在,一旦构建并运行安装,您的服务将显示在Windows Services管理单元中。

请注意,这假设您已在服务项目中添加了“项目安装程序”(右键单击服务设计表,然后单击“添加安装程序”)。我可以在Windows 8上使用Visual Studio 2012 / InstallShield LE确认这项工作。


好的,这也可以在VS 2010和Win 7 Pro中使用。我还没有在VS 2012中尝试过,但这应该可以做到。谢谢。
FIZCH 2012年

3
是否可以有一个对话框询问用户数据库连接字符串(服务器,身份验证和数据库名称),并使用InstallShield LE更新Windows服务配置文件?
阿德莉亚·贝纳留斯

2
这是一个很好的指南:c-sharpcorner.com/uploadfile/cb88b2/…
2013年


1
安装后,此选项不会启动服务。要安装并启动服务,在解决方案资源管理器中,选择3.配置目标系统>服务
拉杰夫2015年

24

我最近通过Install Shield LE安装了VS 2012。最初,在构建后,我一直收到ISEXP -5036内部服务器错误(这是在设置ISLE项目并通过Install Shield Project Assistant运行之后)。最终,我发现它试图在DVD-5媒体类型中创建MSI,这是失败的原因。由于某种原因,从头开始重新创建解决方案会以某种方式识别出只能构建为有效的CD_ROM和SingleImage媒体类型。

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

在此处输入图片说明


2
这可能与他的问题无关,但却解决了我的问题。谢谢!+1
David

我一开始就遇到了同样的问题,默认安装的DVD-5是配置文件,并且安装程序无法构建。有了您的技巧,我将其更改为“单个图像”,并且没有问题!
尼克·博克

选择了DVD-5。简单但很好的答案
beaumondo 2014年

6

虽然在某些情况下使用安装程序类复选框可能有效,但您可能会遇到以下错误:

错误1001.指定的服务已存在

以下是此链接中有关如何解决此问题的摘录:

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

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


您能帮忙解释一下吗?...可以找到“组件\高级设置\服务”视图??
pithhelmet 2013年

它在安装程序的高级版中(ffs!microsoft,为什么要删除安装项目类型!)。如果您具有高级版。community.flexerasoftware.com/…–
保罗·哈钦森

我发现这与安装项目名称的长度有关,即将您的安装项目名称更改为较短的名称,例如“ Install”或“ Setup”。
2013年

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
抱歉。直到今天我才看到这一点。看起来它的答案与我接受的答案几乎相同。我会+1。
FIZCH 2012年

4

我对此有各种各样的问题。

如下。

  1. InstallShield需要很长时间才能下载
  2. 注册过程很痛苦。
  3. 配置选项令人困惑并且过于复杂。
  4. 这个线程上公认的解决方案是破解,并且并不总是有效-请参阅文档中的1001-本质上,您需要通过付费专区才能获得安装Windows服务的正确配置选项。

正如其他地方提到的,对我来说解决方案-放弃InstallShield

在此处输入图片说明

从那点开始很容易。

编辑:更新-从此处安装最新版本https://wix.codeplex.com/releases/view/115492 for vs 2013/2015


3

Visual Studio设置项目作为Visual Studio扩展而返回于VS 2013。

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

请将解决方案和项目更新到VS2013。如果您仍在VS 2010中,直接升级到VS 2013可能会更好。

我对Installsheild LE的经验是,它非常古怪,但是一旦您发现了窍门,它就会更易于使用。但是,我认为限量版是Microsoft和Flexera出售全功能版的一种方式。换句话说,首先我们为Visual Studio支付了微软很多钱,然后为Installsheild付了更多钱给他们的合作伙伴(犯罪)。糟糕的策略未能奏效,因为他们不得不带回VS 2013中的安装项目。


2

我已经写过关于这个主题的文章:

使用Windows Installer XML增强InstallShield-Windows Services

基本上,您可以使用WiX创建合并模块来封装服务,然后将其添加到installshield项目中。(请确保与INSTALLDIR目录相关联,以确保文件位于您期望的位置)。在虚拟机上构建和测试。小菜一碟。


另一种技术要学习?直到昨天,我还没有听说过WIX。我仍然对此一无所知。听起来对于过去只需要单击几下的东西来说,整个过程变得越来越困难。
FIZCH 2012年

只需单击几下即可运行安装程序。创作它们一直是更多的工作。
Christopher Painter

只需单击几下即可设置安装程序。您必须键入标题,制造商等,但是不必编写整个xml文档。关于WIX,您能告诉我些什么?我可以告诉您,您显然对此了解很多。它是什么?我在哪里得到的?如何使用?等等...
fizch 2012年

我已经编写安装程序已有16年了,只有带有单个EXE和快捷方式的简单安装才需要我“点击几下”来编写。无论哪种方式,您都可以在CodePlex上找到WiX,并且有一本关于该主题的书。基础技术是Windows Installer,可以在Platform SDK和MSDN上找到该文档。
Christopher Painter 2012年

5
认真地说,“有一本关于主题... SDK中的文档的书”。克里斯,我们只是想将我们的2010年解决方案迁移到2012年,而安装/设置正在阻止我们前进。MS,带回VS安装/安装visualstudio.uservoice.com/forums/121579-visual-studio/...
JimSTAT


2

我只是在找到答案中提到的在何处添加安装程序时遇到了一些问题。所以这就是方法。

双击Windows服务项目中的服务类。带有文本“将类添加组件到类中,将它们从工具箱中拖动并使用属性窗口设置其属性...”的空白屏幕,右键单击链接以外的任何位置。然后选择“添加安装程序”

拜拜


0

请记住,如果您打算以后创建该安装程序的升级,以上所有说明都将对您没有帮助。升级时,InstallShiled LE无法停止正在运行的服务。您也不能通过Window Service Installer-> BeforeInstall事件来执行此操作。


0

想把这个放在这里;

在VS 2015上,这样做时,反复安装时遇到1001错误。

本页上的答案说明,在较新版本(2012年之后的任何版本)上,显然您需要显式地取消选中installer class选项,然后在安装程序项目的第3步的Services部分下添加Windows服务:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.