in reply to Perl script to EXE to Windows Service

Is the foo.pl using some modules with XS parts? Are you sure you call pp with the right parameters? I'm using PerlApp myself and never had any problems with Win32::Daemon myself. And I do have quite a few services using that module compiled to EXEs. Anyway try to force pp to include the ...\perl\site\lib\auto\Win32\Daemon\Daemon.dll

P.S.: You might want to consider Win32::Daemon::Simple. Not that it'd help you with this problem, it's a wrapper above Win32::Daemon, but it hides some complexities.

Jenda
We'd like to help you learn to help yourself
Look around you, all you see are sympathetic eyes
Stroll around the grounds until you feel at home
   -- P. Simon in Mrs. Robinson

  • Comment on Re: Perl script to EXE to Windows Service

Replies are listed 'Best First'.
Re^2: Perl script to EXE to Windows Service
by punkish (Priest) on Dec 31, 2004 at 01:21 UTC
    Anyway try to force pp to include the ...\perl\site\lib\auto\Win32\Daemon\Daemon.dll

    That was it. It works now. Is this something I should not have had to do under "normal" circumstances? Is there something that I should look for to determine whether or not to explicitly linking in the daemon.dll?

    In any case, what a great piece of advice. I am off to drink some eggnog now. I will lift a chalice to you as thanks for your invaluable help.

    Update: A thought occurred to me. My script is writing out a log. I have hard-coded the path to the log in my script before converting it to the exe which I then converted to the service. This path is likely going to be different in the target computer(s). How do I externalize this path to the log file so I can still create the exe and install it as a service on a target computer, yet change the log file path (and, perhaps, other config vars as well) at will... you know, stop the service, change a few config params, restart the service, a la Apache.exe does on Windows?

      No you should not have to tell PAR to include the DLL, it should do that automaticaly.

      I can only repeat the Win32::Daemon::Simple suggestion. It'll allow you to add the ability to install/uninstall/start/stop the service by the executable itself, set parameters that will be stored in the registry, be changed by the executable and presented to the script as constants.

      Jenda
      We'd like to help you learn to help yourself
      Look around you, all you see are sympathetic eyes
      Stroll around the grounds until you feel at home
         -- P. Simon in Mrs. Robinson

      use
      a) the registry
      b) a .ini-file located in the directory where the .exe is. you can get the path to the .exe by calling PerlSvc::exe()
        or even supply it as a parameter to the service, i.e. "Start Parameters" when you show service properties. Supply a "reasonable" default when the service installs, or even ask for the parameter during installation
        the hardest line to type correctly is: stty erase ^H