2015-10-05 154 views
20

我编写了一个在Framework 4.0上运行并在VS 2015中运行的Windows服务。 我还创建了一个安装项目(免费Installshield版本)。安装自定义Windows服务时出现错误1001

我的服务在安装后没有显示在services.msc下,所以根据其他一些帖子,我必须在InstallShield中将主输出标记为'安装程序类',但是当我这样做时,我会收到错误1001运行setup.exe。

post指出“错误代码1001总是意味着安装程序类自定义操作失败。”并且我不应该使用自定义操作。我目前没有使用任何自定义操作。

大多数本网站上的解决方案的有2010 InstallShield说明,并为2015年

该错误在我的两个开发计算机以及所有客户端计算机上的步骤不起作用。 有什么建议吗?

编辑:

未能创建还原点事件查看器显示”(过程= C:\ Windows \ System32下\ MSIEXEC.EXE/V;描述=安装在我的应用名称;错误= 0x80070422)。

回答

0

我发现了一些可以摆脱问题的东西,但它的确创造了一个新问题,尽管这个问题简单得多,也不太重要。

是什么原因造成我的问题是,我不得不从我的ServiceInstaller的AfterInstall删除以下代码:

new ServiceController(ServiceInstaller.ServiceName).Start(); 

将其加入到自动启动我的服务,一旦它被安装。现在我只需手动启动服务。

7

如果您的生成计算机上安装了.NET 4.6,则需要限制版的2015版本,以避免InstallShield支持安装程序类的版本问题(导致1001错误的原因很多,所以这个是不是有保证的修补程序。)请注意,2015年的InstallShield限量版不支持Visual Studio中的社区版。

+0

感谢。我已经升级到2015年,但我仍然发现错误。 –

0

未安装有针对性的.NET框架时发生此错误。

如果你的目标是相同的开发机器,那么请检查该服务(EXE)是否已经在该机器上运行(它不应该运行)。

+0

我针对框架4,它已安装。不工作。 –

1

因为我不能发表评论,但我会只是一个答案,你自己接受的答案回答。我知道你问这个问题已经有一段时间了,但是这里有。

如果你想自动启动安装之后就可以转到步骤3.配置目标系统。选择服务选项卡。右键单击服务并添加服务。您应该能够在主输出中找到任何服务。添加后,您可以选择与自动启动等相关的不同设置。希望它可以帮助你。

在一个侧面说明,我仍然在寻找答案,我的1001

38

我有此相同的问题。突然升级到VisualStudio 2013和较新的InstallShield LE并构建我的安装包后,它们将失败并出现神秘的1001错误。

明确的答案

我找到了明确的答案。您无法再在InstallShieldLE中选中“installer class”复选框。 您必须取消选中该项目

为了打开此对话框,转到指定应用程序数据>文件并右键单击您的主输出,然后选择属性。

uncheck Installer Class

以前,你必须有它的选择:现在不得选择

以前(的Visual Studio 2012,你必须有一个项目选择或服务安装之前失败,这很可怕

现在,您必须转到InstallShield LE项目中的以下树项并双击服务节点: services node

之后的服务项目出现在左侧(有我提到什么可怕的UX和UI这整个事情是什么?),然后右击它,所以你可以添加的服务。

add service

选择出现添加服务菜单项,你会看到一个表单,允许您设置安装的详细信息。

installation details

一旦你做到这一点,重建MSI将工作,这将解决1001错误。

原来的InstallShield Devs可能已经解决了这一切都是可怕的浪费。不幸的。

+1

取消选中“主输出”的“属性”对话框中的“安装程序类”复选框。 – badikumar

+0

@badikumar很高兴帮助和感谢您添加到答案的add'tl信息。 – raddevus

+0

@daylight谢谢。我解决了错误1001,但我得到了错误1920 – GSP

3

希望这会帮助你们中的一些人在尝试安装使用InstallShield 2015 LE安装程序项目并将主输出设置为安装程序的.NET Windows服务时遇到错误1001。

这是当.NET 4.6安装在Windows 10

https://flexeracommunity.force.com/customer/articles/en_US/ISSUE/HOTFIX-Install-Fails-With-Error-1001-When-a-NET-Installer-Class-Component-is-Present-in-InstallShield-2015-SP1

+2

请不要在多个问题上发布相同的答案。如果相同的信息真的回答了这两个问题,那么一个问题(通常是较新的问题)应该作为另一个问题的副本来结束。您可以通过[投票将其关闭为重复](https://stackoverflow.com/help/privileges/close-questions)来表明这一点,或者如果您没有足够的声望,[举起一面旗帜]( https://stackoverflow.com/help/privileges/flag-posts)来表明它是重复的。否则,请定制您对此问题的回答,而不要将相同的答案粘贴到多个地方。 – DavidPostill

+0

这产生了一个错误:类未注册。我不确定链接的解决方案是否与InstallShield LE 2015兼容。 –

0

我使用VS 2012使用InstallShield LE 2015年针对.NET 4.5,我必须取消选中 “安装程序类” 一个已知的bug为它工作。

0

经过一番挖掘之后,我发现安装程序在尝试删除服务时(与您正在安装的任何相关的服务有关) - AND(服务)不再存在,因此发生错误。 我的用例场景 - 从MVS2015开始安装一个复杂解决方案,该解决方案也包含一个Windows服务。 当您更改解决方案的版本时,安装程​​序将停止其跟踪,发现您的应用程序之前已安装,并且因为它是不同的版本而无法卸载它。它弹出一个对话框,说明这一点,然后退出....但它没有安装该服务。 现在尝试安装或卸载失败并显示错误1001,因为Windows没有找到要卸载它的服务。

如果有人有更好的解决方案,请发布它,但我的解决方案是使用sc命令行实用程序。 sc是一个可用于从命令行操作服务的实用程序(键入sc寻求帮助)。所以我使用sc来添加服务(按名称),然后我可以卸载,或像平常一样安装。命令中必须有一个有效的bin路径 - 但任何有效的路径都将被接受。

sc <server> create [service name] [binPath= ] <option1> <option2>... 

实施例:

sc create MyService binPath= C:\Windows\explorer.exe 
[SC] CreateService SUCCESS 
相关问题