Jump to content
uniGUI Discussion Forums
fabiorov

Convert a project from 'Desktop' to 'Service'

Recommended Posts

Hi Everybody

 

I have a project in 'desktop' mode, and I don't want to create a new one, copy/paste forms to convert it to ''service'.

 

Is there a simpler way to perform this conversion?

 

I am using 'uniGUI Personal Edition'

 

Share this post


Link to post
Share on other sites

Hi,

 

"If you want to convert a standard uniGUI app to service app, the best way is to create a new Service app and then moving all forms and modules from old app to the new app."

 

Best regards,

  • Upvote 1

Share this post


Link to post
Share on other sites

You can edit your project dpr file using this template and have all 3 modes in one project simultaneously:

// Use one of 3 defines below to choose compile mode:

//{$DEFINE UNIGUI_VCL}      // Stand Alone Application.
//{$DEFINE UNIGUI_SERVICE}  // Windows Service Application.
//{$DEFINE UNIGUI_ISAPI}    // ISAPI Library.

{$IFDEF UNIGUI_SERVICE}
  {$EXTENSION exe}
  program
{$ENDIF}

{$IFDEF UNIGUI_VCL}
  {$EXTENSION exe}
  program
{$ENDIF}

{$IFDEF UNIGUI_ISAPI}
  {$EXTENSION dll}
  library
{$ENDIF}
  MyProgram;  // Your project name.

uses
{$IFDEF UNIGUI_SERVICE}
  SvcMgr,
{$ENDIF}
{$IFDEF UNIGUI_VCL}
  Forms,
{$ENDIF}
{$IFDEF UNIGUI_ISAPI}
  uniGUIISAPI,
{$ENDIF}
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  ServiceModule in 'ServiceModule.pas' {MyServiceClass: TUniGUIService}, // Grab this one from a new project. 
  // Add your custom units here.  

{$R *.res}


{$IFDEF UNIGUI_ISAPI}
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
{$ENDIF}

begin
{$IFDEF UNIGUI_SERVICE}
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TMyServiceClass, MyServiceClass);  // Get from your service module.
  Application.Run;
{$ENDIF}

{$IFDEF UNIGUI_VCL}
  ReportMemoryLeaksOnShutdown:=True;  // Optional.
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
{$ENDIF}
end.

  • Upvote 3

Share this post


Link to post
Share on other sites

 

You can edit your project dpr file using this template and have all 3 modes in one project simultaneously:

// Use one of 3 defines below to choose compile mode:

//{$DEFINE UNIGUI_VCL}      // Stand Alone Application.
//{$DEFINE UNIGUI_SERVICE}  // Windows Service Application.
//{$DEFINE UNIGUI_ISAPI}    // ISAPI Library.

{$IFDEF UNIGUI_SERVICE}
  {$EXTENSION exe}
  program
{$ENDIF}

{$IFDEF UNIGUI_VCL}
  {$EXTENSION exe}
  program
{$ENDIF}

{$IFDEF UNIGUI_ISAPI}
  {$EXTENSION dll}
  library
{$ENDIF}
  MyProgram;  // Your project name.

uses
{$IFDEF UNIGUI_SERVICE}
  SvcMgr,
{$ENDIF}
{$IFDEF UNIGUI_VCL}
  Forms,
{$ENDIF}
{$IFDEF UNIGUI_ISAPI}
  uniGUIISAPI,
{$ENDIF}
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  ServiceModule in 'ServiceModule.pas' {MyServiceClass: TUniGUIService}, // Grab this one from a new project. 
  // Add your custom units here.  

{$R *.res}


{$IFDEF UNIGUI_ISAPI}
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
{$ENDIF}

begin
{$IFDEF UNIGUI_SERVICE}
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TMyServiceClass, MyServiceClass);  // Get from your service module.
  Application.Run;
{$ENDIF}

{$IFDEF UNIGUI_VCL}
  ReportMemoryLeaksOnShutdown:=True;  // Optional.
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
{$ENDIF}
end.

 

It works perfectly! Thanks.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×