2012-08-16 121 views
103

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

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

+1

使用InstallUtil自定义操作实际上是一个真正的穷人的做法。它基本上是用一种脆弱的解决方案重新发明轮子,因为底层的创作工具没有公开MSI的本地功能。 – 2012-08-17 01:24:54

回答

159

对于Visual Studio 2012 &的InstallShield LE,请执行下列操作:

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

Files section

  • 鼠标右键点击你的服务的主输出,并转到属性。
  • 单击“COM和.NET设置”选项卡,并勾选“安装程序类”复选框。 enter image description here
  • 点击Ok

现在,一旦你建立并运行安装,您的服务将出现在Windows服务的管理单元。

注意,这里假设你增加了一个“项目安装程序”到您的服务项目(右键单击服务设计表并单击“添加安装程序”)。我可以通过Visual Studio 2012/InstallShield LE在Windows 8上确认这项工作。

+0

好的,这也适用于VS 2010和Win 7 Pro。我还没有尝试在VS 2012中,但这应该做到这一点。谢谢。 – fizch 2012-11-08 20:55:17

+3

是否可以有一个对话框询问用户数据库连接字符串(服务器,身份验证和数据库名称)并使用InstallShield LE更新Windows服务配置文件? – 2013-05-01 13:44:05

+2

这是一个很好的指导:http://www.c-sharpcorner.com/uploadfile/cb88b2/simple-steps-to-create-setup-file-using-install-shield-le-fr/。 – Jonty 2013-07-31 09:50:01

2

我写这个主题:

Augmenting InstallShield using Windows Installer XML - Windows Services

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

+0

另一种学习技术?直到昨天,我还没有听说过WIX。我对这件事一无所知。听起来这个过程对于过去只需点击几下的东西就变得越来越困难。 – fizch 2012-08-17 18:55:18

+0

只需点击几下* RUN *安装程序。编写它们一直是更多的努力。 – 2012-08-17 21:49:26

+0

它也只需要点击几下设置安装程序。您必须输入标题,制造商等,但是您不必编写整个xml文档。 关于WIX,你能告诉我什么?我可以告诉你,你显然知道很多。它是什么?我在哪里得到它?我如何使用它?等... – fizch 2012-08-17 21:52:44

4

如果您的项目是.NET,那么尝试使用InstallShield LE可以使用ServiceProcessInstaller类。

要使其与InstallShield一起使用,您必须进入InstallShield“文件”树并右键单击您的文件。然后选中“COM和.NET设置”选项卡上的“安装程序类”复选框。

我已经得到它的工作,但我有一些像Windows 2008R2操作系统的问题。你的旅费可能会改变。

下面是一个例子:http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C

+1

对不起。直到今天我才看到这一点。它看起来与我接受的答案几乎相同。我会为它+1。 – fizch 2012-11-08 20:56:20

6

当使用安装程序类复选框可用于某些情况下工作,你可能会遇到以下错误:

Error 1001.The specified service already exists

下面是从这个link关于如何解决此问题的摘录:

For Error: Error 1001.The specified service already exists

This error will occur if the component installing a .NET Service is incorrectly configured with ".NET Installer Class" set to Yes. The method to install a .NET Service is to use Component\Advanced Settings\Services view, not the ".NET Installer Class" setting. Making definitions in the Component\Advanced Settings\Services view creates entries in the Windows Installer ServiceControl and ServiceInstall Tables. These entries are used by the Windows Installer "InstallServices" action to install the Service.

+0

你能帮忙解释一下吗.... Component \ Advanced Settings \ Services“视图可以找到吗? – pithhelmet 2013-04-04 18:44:50

+0

它在安装程序的首要版本中(ffs!microsoft为什么拿出安装项目类型!).. 如果你有最好的版本。 http://community.flexerasoftware.com/showthread.php?175189-Install-windows-service – 2013-06-19 09:39:01

+0

我发现它与长度有关安装项目名称,即改变你的安装项目名称,如“安装”或“设置”更短的东西。 – Jonty 2013-07-31 09:46:45

24

我最近用Install Shield LE安装了VS 2012。起初,我在构建完成后不断收到ISEXP -5036内部服务器错误(这是在设置ISLE项目并运行Install Shield Project Assistant之后)。最终我发现它试图在DVD-5媒体类型中创建MSI,这是它失败的地方。出于某种原因,从头开始再次创建解决方案承认只能生成适用于CD_ROM和SingleImage的媒体类型。

无论如何纠正5036错误,单击VS 2012中的生成选项卡(顶部菜单),选择配置管理器,你应该看到你的IS设置文件在DVD-5配置上被选中。将其更改为CD_ROM并单击关闭。一旦你建立/重建它将完成没有IS 5036错误。

enter image description here

+2

这可能与他的问题没有任何关系,但它解决了我的问题。谢谢!+1 – David 2013-04-15 14:38:46

+0

同样的问题,我立即开始,默认安装DVD-5作为配置,安装程序无法构建。随着您的提示,我将其更改为单张图像,并与您一起构建问题! – 2014-07-30 04:28:54

+0

选择DVD-5。简单但很好的答案 – beaumondo 2014-12-18 18:41:42

2

我只是得到了一些问题,找到在哪里添加安装在答复中提到。所以这里是如何。

您的服务类双击您的Windows服务项目 空白屏幕文本“将组件添加到您的类,从工具箱中拖动,使用属性窗口设置其属性...” 右内点击任何地方,但上的链接,选择“添加安装程序”

再见

4

我有各种各样的这个问题。

如下。

  1. 的InstallShield需要年龄下载
  2. 注册过程是一种痛苦。
  3. 配置选项很混乱且过于复杂。
  4. 在这个线程上被接受的解决方案是一种黑客攻击,它并不总是能够工作 - 请参阅文档中的1001 - 本质上,您需要通过付费墙获得正确的配置选项才能安装Windows服务。如其他地方提到

解决方案,我 - 是放弃的InstallShield

enter image description here

从这一点非常容易。

编辑:更新 - 安装从这里https://wix.codeplex.com/releases/view/115492最新版本VS2015分之2013

3

Visual Studio安装项目早在2013 VS作为一个Visual Studio扩展。

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

请更新您的解决方案和项目,2013年VS如果你仍然在VS 2010中,你可能直接升级到VS 2013

我与Installsheild LE的经验是,最好这是非常古怪的,但一旦你弄清楚这些技巧,它更容易使用。不过,我认为限量版是微软和Flexera出售全功能版本的一种方式。换句话说,首先我们向微软公司付了很多钱给Visual Studio,然后他们的合作伙伴(犯罪)更多地为Installsheild付款。带给因为他们没有工作了糟糕的战略背面的设置项目,2013年VS

-1

请参阅此链接,这将有助于你

Installshield

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效 – 2015-06-30 06:59:35

0

记住,所有上述说明如果您打算稍后创建该设置的升级,则不会对您有所帮助。升级时,InstallShiled LE无法停止正在运行的服务。您无法从Window Service Installer - > BeforeInstall事件中执行此操作。

0

想要在这里;

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

这个网页上回答解释说,在新版本(任何过去的2012),显然你需要明确地离开安装程序类选项选中,然后根据下步服务部分添加您的windows服务安装项目3:在Visual Studio部署项目

Error 1001 when installing custom Windows Service

相关问题