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

时间:2015-10-05 13:28:53

标签: windows-services installshield

我写了一个在Framework 4.0上运行并在VS 2015中运行的Windows服务。 我还创建了一个安装项目(免费的Installshield版本)。

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

post表示"错误代码1001总是表示安装程序类自定义操作失败。"并且我不应该使用自定义操作。我目前没有使用任何自定义操作。

此站点上的大部分解决方案都包含Installshield 2010的说明,并且这些步骤在2015年不起作用。

错误出现在我的开发机器和所有客户端机器上。 有什么建议吗?

编辑:

事件查看器显示"无法创建还原点(Process = C:\ Windows \ system32 \ msiexec.exe / V;说明=已安装我的应用程序名称。;错误= 0x80070422)。

8 个答案:

答案 0 :(得分:38)

我有同样的问题。升级到VisualStudio 2013和较新的InstallShield LE并构建我的安装包后,突然出现隐藏的1001错误。

明确答案

我找到了明确的答案。您不能再在InstallShieldLE中选中“安装程序类”复选框。 您必须取消选中该项

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

uncheck Installer Class

以前,你必须选择它:现在不能选择

以前(Visual Studio 2012以及必须选择该项目或服务安装 失败之前。这非常糟糕。

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

之后,服务项目出现在左侧(我曾经提到过这个可怕的用户体验和用户界面的内容是什么?)并右键单击它以便添加服务。

add service

选择显示添加服务的菜单项,您将获得一个表单,允许您设置安装程序详细信息。

installation details

一旦你这样做并重建你的MSI将工作,这将解决1001错误。

原来的InstallShield Devs可能已经解决了,这完全是浪费时间。不幸的。

答案 1 :(得分:7)

如果您的构建计算机上安装了.NET 4.6,则需要2015版本的限制版,以避免InstallShield对安装程序类的支持出现版本控制错误。 (导致1001错误的原因有很多,因此这不是保证修复。)请注意,InstallShield 2015 Limited Edition不支持Visual Studio的社区版。

答案 2 :(得分:3)

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

在Windows 10上安装.NET 4.6时,这是一个已知错误。

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

答案 3 :(得分:1)

由于我无法发表评论,我只会回复你自己接受的答案。我知道你问这个问题已经有一段时间了,但是这里有。

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

另一方面,我仍然在寻找1001的答案。

答案 4 :(得分:0)

未安装目标.NET框架时会发生此错误。

如果您的目标是同一台开发机器,请检查该机器上是否已运行该服务(EXE)(它不应该运行)。

答案 5 :(得分:0)

我找到了摆脱问题的东西,但它确实创造了一个新问题,虽然这个问题要简单得多,也不那么重要。

导致我的问题的原因是我必须从我的ServiceInstaller的AfterInstall中删除以下代码:

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

安装完成后,会将其添加到自动启动服务中。现在我只需手动启动服务。

答案 6 :(得分:0)

我正在使用VS 2012与InstallShield LE 2015针对.NET 4.5,我必须取消选中“安装程序类”才能使用它。

答案 7 :(得分:0)

经过一番挖掘后,我发现安装程序在尝试删除服务时失败了该错误(与您正在安装的任何内容相关联) - 并且(服务)不再存在。 我的用例场景 - 从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
相关问题