Error 1001 when installing custom Windows Service

20

I wrote a windows service that runs on Framework 4.0 and running in VS 2015. I also created a setup project (free Installshield version).

My service did not show under services.msc after I installed it, so according to some other posts I had to mark the Primary Output in InstallShield as 'Installer Class', but when I do that I get Error 1001 when I run the setup.exe.

This post states that "Error code 1001 ALWAYS means a failure in the Installer class custom action." and that I should not use Custom Actions. I'm not using any custom actions at the moment.

Most of the solution on this site have instructions for Installshield 2010, and the steps does not work for 2015.

The error appears on both my dev machine as well as all client machines. Any suggestions?

EDIT:

The event viewer displays "Failed to create restore point (Process = C:\Windows\system32\msiexec.exe /V; Description = Installed My App Name.; Error = 0x80070422).

windows-services
installshield
asked on Stack Overflow Oct 5, 2015 by Cameron Castillo • edited May 23, 2017 by Community

8 Answers

38

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.

uncheck Installer Class

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: 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.

add 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.

installation 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.

answered on Stack Overflow Jul 8, 2016 by raddevus • edited Aug 19, 2016 by badikumar
7

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.

answered on Stack Overflow Oct 6, 2015 by Michael Urman
3

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

answered on Stack Overflow Jan 9, 2017 by Warren R
1

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.

answered on Stack Overflow Mar 8, 2016 by LuqJensen
0

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).

answered on Stack Overflow Oct 13, 2015 by Ajit Medhekar
0

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.

answered on Stack Overflow Nov 24, 2015 by Cameron Castillo
0

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.

answered on Stack Overflow Jan 22, 2017 by kmxr
0

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
answered on Stack Overflow Mar 27, 2017 by Gogu CelMare

User contributions licensed under CC BY-SA 3.0