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

Error 1001 when installing custom Windows Service

我写了一个 windows 服务,在 Framework 4.0 上 运行s 和在 VS 2015 上 运行ning。 我还创建了一个安装项目(免费的 Installshield 版本)。

我的服务在安装后没有显示在 services.msc 下,所以根据其他一些帖子,我不得不将 InstallShield 中的主要输出标记为 'Installer Class',但是当我这样做时,我得到了当我 运行 setup.exe.

时出现错误 1001

post 声明 "Error code 1001 ALWAYS means a failure in the Installer class custom action." 并且我不应使用自定义操作。我目前没有使用任何自定义操作。

此站点上的大多数解决方案都有适用于 Installshield 2010 的说明,这些步骤不适用于 2015。

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

编辑:

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

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

的社区版

未安装目标 .NET 框架时会出现此错误。

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

我找到了解决这个问题的方法,但它确实产生了一个新问题,尽管这个问题要简单得多,也不那么重要。

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

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

这是为了在安装后自动启动我的服务而添加的。现在我将只手动启动服务。

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

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

附带说明一下,我仍在寻找 1001 的答案。

我遇到了完全相同的问题。在升级到 VisualStudio 2013 和更新的 InstallShield LE 并构建我的安装包后,它们突然失败并出现神秘的 1001 错误。

确定的答案

我找到了明确的答案。您不能再在 InstallShieldLE 中选择 "installer class" selected 复选框。 您必须取消选中该项目

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

以前必须选中:现在不能选中

以前(Visual Studio 2012 年之前,您必须 select 编辑该项目,否则服务安装 失败。这非常糟糕。

现在,您必须转到 InstallShield LE 项目中的以下树项和 double-click 服务节点:

之后服务项出现在左侧(我有没有提到过糟糕的用户体验和 UI 这整件事是什么?)然后右键单击它以便您可以添加服务。

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

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

原来的 InstallShield Devs 本来可以解决的,这完全是浪费时间。不幸的是。

希望这能帮助你们中的一些人在尝试使用 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

我正在使用 VS 2012 和 InstallShield LE 2015,目标是 .NET 4.5,我必须取消选中 "Installer class" 才能正常工作。

经过一些挖掘后,我发现安装程序在尝试删除服务(与您正在安装的任何内容相关联)时失败并出现该错误 - 并且(服务)不再存在。 我的用例场景 - 从复杂解决方案的 MVS2015 开始安装,该解决方案还包含 windows 服务。 当您更改解决方案的版本时,安装程​​序会停止运行,发现您的应用程序之前已安装并且无法卸载它,因为它是不同的版本。它会弹出一个对话框,说明这一点并退出......但它已经卸载了该服务。 现在尝试安装或卸载失败并出现错误 1001,因为 windows 找不到用于卸载它的服务。

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

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

示例:

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