103

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

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

4

11 回答 11

161

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

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

文件部分

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

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

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

于 2012-10-31T16:33:09.343 回答
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 错误。

在此处输入图像描述

于 2012-12-20T10:05:35.130 回答
6

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

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

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

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

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

于 2012-12-18T23:06:39.113 回答
4

如果您的项目是 .NET,那么请尝试将 ServiceProcessInstaller 类与 InstallShield LE 一起使用。

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

我已经让它工作了,但是我在一些操作系统上遇到了问题,比如 Windows 2008R2。你的旅费可能会改变。

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

于 2012-10-28T22:03:29.260 回答
4

我遇到了各种各样的问题。

如下。

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

如其他地方所述,我的解决方案是放弃 InstallShield

在此处输入图像描述

从那时起非常容易。

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

于 2013-06-19T11:57:29.317 回答
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 中恢复设置项目。

于 2014-12-10T20:08:56.337 回答
2

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

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

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

于 2012-08-17T01:18:29.647 回答
2

我正在使用 VS2012 和 Installshield LE 春季版。我不必使用 Wix。

如果您遇到错误“无法创建用于 InstallUtilLib.dll 的 _isconfig.xml”,请在安装项目文件夹中创建一个与安装项目同名的文件夹。

归功于http://community.flexerasoftware.com/showthread.php?165929-Could-not-create-_isconfig-xml-for-use-with-InstallUtilLib-dll

于 2013-04-29T08:56:18.717 回答
2

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

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

拜拜

于 2013-06-06T16:25:34.197 回答
0

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

于 2016-09-19T21:17:17.167 回答
0

想把这个放在这里;

在 VS 2015 上,执行此操作时,我反复安装时遇到 1001 错误。

此页面上的答案解释说,在较新的版本(2012 年以后的任何版本)上,显然您需要明确保留安装程序类选项未选中,然后在安装程序项目的第 3 步下的“服务”部分下添加您的 Windows 服务:

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

于 2016-09-25T19:20:53.593 回答