Error 1001 when installing custom Windows Service

馋奶兔 提交于 2019-11-28 06:25:16
raddevus

I had this exact same issue. Suddenly after upgrading to VisualStudio 2013 and the newer InstallShield LE and building my installation packages they would fail with the cryptic 1001 error.

Definitive Answer

I found the definitive answer. You can no longer have the checkbox for "installer class" selected in InstallShieldLE. You must uncheck that item.

In order to open this dialog box, go to Specify Application Data > Files and right click on your Primary Output and select Properties.

Previously, You Had To Have It Selected: Now It Must Not Be Selected

Previously (Visual Studio 2012 and before you had to have that item selected or the service installation would fail. This is quite terrible.

Now, you have to go to following tree item in the InstallShield LE project and double-click the Services node:

After that the Services item appears on the left (have I mentioned what a terrible UX and UI this entire thing is?) and right click it so you can add the service.

Choose the menu item which appears to add the service and you'll get a form which allows you to set up the installer details.

Once you do that and rebuild your MSI will work and this will resolve the 1001 error.

This was all a terrible waste of time that the original InstallShield Devs could've resolved. Unfortunate.

If you have .NET 4.6 installed on your build machine, you'll need the 2015 version of the limited edition to avoid a versioning bug with InstallShield's support for Installer Classes. (There are many causes for a 1001 error, so this is not a guaranteed fix.) Note that InstallShield 2015 Limited Edition does not support the community edition of Visual Studio.

Hopefully this will help some of you encountering the Error 1001 when trying to install a .NET Windows Service using InstallShield 2015 LE installer project with the Primary Output set as an Installer.

It's a known bug when .NET 4.6 is installed on 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

Since i cant comment yet i will just reply with an answer to your own accepted answer. I know it has been a while since you asked the question but here goes.

If you want auto start after install you can go to step 3. Configure the Target System. Choose the Services tab. Right click Services and add Service. You should be able to locate any service in your Primary Output. Once added you can select different settings related to auto start and so on. Hope it helps you.

On a side note, i am still looking for the answer to my 1001.

This error occurs when targeted .NET framework is not installed.

If you are targeting the same development machine then please check if that service (EXE) is already running on that machine or not (It should not running).

I found something to get rid of the problem, but it does create a new question, albeit a much simpler and less critical one.

What caused my problem is that I had to remove the following code from my ServiceInstaller's AfterInstall:

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

This was added to auto start my service once it has been installed. For now I will just manually start the service.

I am using VS 2012 with InstallShield LE 2015 targeting .NET 4.5 and I have to uncheck the "Installer class" for it to work.

After some digging I found out that the installer fails with that error when it tries to remove the service (associated with whatever you are installing) - AND (the service) is not there anymore. My use case scenario - Start install from MVS2015 of a complex solution that comprises also a windows service. When you change the version of the solution, the installer stops in its tracks finding that the your app was installed before and can not uninstall it as it is a different version. It pops up a dialog box stating this and exits .... BUT IT HAS UNINSTALLED the service. Now trying to install or uninstall fails with the error 1001 because windows doesn't find the service to uninstall it.

If somebody has a better solution please post it, but my solution is to use sc command line utility. sc is a utility that can be used to manipulate services from the command line (type sc for help). So i use sc to add the service (by name), and then I can do uninstall, or install as usual. Is compulsory to have a valid bin path in command - but ANY valid path will be accepted.

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

Example:

sc create MyService binPath= C:\Windows\explorer.exe
[SC] CreateService SUCCESS
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!