PDA

Click to See Complete Forum and Search --> : Inno Setup :: Problems in installation of Windows Service


vb_programmer
Apr 30th, 2006, 07:31 AM
Hello!

I'm installing a Windows Service Application using Inno Setup. The windows service is an external IP address check service and that obviously needs to be registered as Service by installer itself. As Inno Setup does not provide direct support for installing Windows Service (if so, then at least I don't know how; please let me know!); I have programmed a command line switch for my Application EXE itself which registers Windows Service. I have created a Task as "Register Windows Service" and if selected I want Inno Setup to register the Service. I also have set "Restart" flag for this Task which will make the Installer to Restart User's PC.

Now, the problem is ...

[1] Installation of Service with command line is NOT set as PostInstall as I installer immediately restarts the PC without registering the Service properly. On some PCs, the program registers Service properly; but on some PCs, "Active-X component can not create object" error is shown. This means that Service installation param is passed to my EXE by Installer even before all needed ActiveX components are installed and registered on User's PC. How can I solve this issue?

[2] This second problem is regarding appearance of Inno Setup Installer. I have created a Page in InitializeWizard procedure. That page appears before my EULA :: Agree/Disagree page. Any suggestion to get my custom wizard page after EULA?

I'm waiting for your valuable reply.

Regards,

Ruturaj.

randem
Apr 30th, 2006, 01:52 PM
[1] Your app is the one that installs itself as a service... Please explain why you want Inno Setup to do this. All you have to do is run your app and it will install itself if it is written properly. The run section will run the app after everything is installed and registered. If you need to restart then you need to place a parameter in the Win.ini or registry file so that your program will start after restart.

[2] Don't know about that, but you could probably set that page to not show and create your own custom page.

CodeWalker
Feb 28th, 2008, 01:29 PM
Because:

1) Sometimes you do need to register an Application as a Windows Service so that it properly starts with the Operating System if you have to remotely reboot an Production Machine running that Application as a Service.

This is properly following Microsoft Methodologies.

Only a moron would use Win.ini nowdays....Win.ini was for Windows 3.1 days and should not be on any NT-base operating system (NT 4.0, Server 2000+, XP, Vista).

2) If you don't understand the technology, don't reply with your neanderthal answer.

I'm sick of searching the internet for answers and finding these stupid, useless answers.

Also, Inno Setup is Jordan Russell's software.
I dunno who randem is, but I don't think they have anything to do with
Inno Setup.

Theres a confusion with the name ********** which is used by InnoSetup and this random company with the name Inno-Script.

Dunno who came first, but vb_programmer, ask your question at
http://www.jrsoftware.org/ , the makers of InnoSetup
and maybe you'll get a better answer.

I'm looking for that answer also, I know it exsists, I just forgot how.


random employees: Do the world a favor and STOP BREEDING.

dilettante
Feb 28th, 2008, 05:42 PM
I won't claim to know anything about InnoSetup, but I think it is correct that services commonly "install" themselves by a special run with command line parameters instructing them to do so.

I believe this is what the OP meant by a PostInstall action.

However it is true that in all but a very few special cases you need this service application to be completely installed before invoking it with the assigned "install yourself" command line params. This seems to be the failure behind question [1] above.

I know that an MSI installer can be given the parameters necessary to call the Service Control Manager and "install" the service application as a service. This is done without running the application itself at all, and such an application doesn't even need the necessary logic included within itself at all.


Perhaps InnoSetup offers a similar capability? Perhaps it just isn't as well known because it doesn't get used often by most developers.

Lacking that, perhaps what the OP wants/needs is a way to have the PostInstall action deferred to later in the basic installation process. That is, deferred until all COM registration has completed. At least that's my interpretation of the question.

I'm not sure why rebooting is being requested. You normally only do that to replace in-use files as far as I know.


Not knowing a thing about InnoSetup, I can't comment on question [2].

randem
Mar 1st, 2008, 08:17 PM
If he wants the service to install with the command line operation after all com object have been installed and registered, he would just place an entry into the [Run] section. Now the only problem I see with that is if it relies on one of the just installed com objects that won't be replaced until a restart occurs.