For anyone interested..this is what i did...
static class Program
{
public static void Main(string[] args)
{
ServiceBase[] servicesToRun;
servicesToRun = new ServiceBase[]
{
new Service1()
};
if (Environment.UserInteractive)
{
RunInteractive(servicesToRun);
}
else
{
ServiceBase.Run(servicesToRun);
}
}
static void RunInteractive(ServiceBase[] servicesToRun)
{
Form1 oForm = new Form1();
oForm.ShowDialog();
}
}
From: [email protected] [mailto:[email protected]]
On Behalf Of Ben Scott
Sent: Monday, 22 July 2013 6:36 PM
To: ozDotNet
Subject: Re: Winforms\WIndows Service
I have generally written services as console apps first, with
`Console.WriteLine` injected as a log through the application. Then to
create an installer I just look at the command line options, so my main()
looks like:
if (options.Help) {
// show help
return;
}
if (options.Install) {
InstallTheService(GetTransactedInstaller());
return;
}
if (options.Uninstall) {
UninstallTheService(GetTransactedInstaller());
return;
}
// nothing to action, just spin up the service
Then you need to decide whether you are running in console or as a service,
and swap out the console for a windows log if required.
If you want to access the service once it is installed I would have a GUI
that accesses the service via a socket or RPC or indirectly through the file
system or a database, surfaced via something like a notification icon, so
WinForms or WPF. There are limitations on services running on the desktop
that I believe get stricter the more modern an OS you are running so I
wouldn't even bother trying to surface it directly.
But if you want to be able to run a WinForms app that provides a service -
think SMTP4DEV, is a notify app that spins up a loopback SMTP server - but
with the ability to install that service as a Windows service, you would
just replace the command line option solution above with a button in the
application that runs the service installer, I'm guessing with options that
are controlled in the GUI.
Cheers
Ben Scott
@belfryimages
On 22/07/13 5:34 PM, Tom Rutter wrote:
Does it need to run even when no user is logged in?
If not, then you could just create a gui app as required and add it to the
Windows startup list. Much cleaner and using the features already built into
Windows.
On Mon, Jul 22, 2013 at 3:43 PM, <[email protected]> wrote:
I have gui that provides extra functionality when required but installed as
service so a reboot doesn't affect operation.
From: [email protected] [mailto:[email protected]]
On Behalf Of Tom Rutter
Sent: Monday, 22 July 2013 3:26 PM
To: ozDotNet
Subject: Re: Winforms\WIndows Service
Yeh I maintained an app back in the day that did this for debugging
purposes. Just had 2 code paths. Don't really need it though. I can't think
of a reason you would need this off the top of my head.
On Mon, Jul 22, 2013 at 10:13 AM, <[email protected]> wrote:
I found some code a while back that allowed me to have an application that
could run as a service or a winform interface.anyone done this before?
Anthony