You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/01/26 20:28:18 UTC

svn commit: r372590 - in /directory/trunks: ./ apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/...

Author: akarasulu
Date: Thu Jan 26 11:28:11 2006
New Revision: 372590

URL: http://svn.apache.org/viewcvs?rev=372590&view=rev
Log:
enabling inno install

Modified:
    directory/trunks/   (props changed)
    directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ServiceInstallersMojo.java
    directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java
    directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoTarget.java

Propchange: directory/trunks/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Jan 26 11:28:11 2006
@@ -1,4 +1,5 @@
 *.ipr
+server-work
 *.iws
 *.iml
 server-work

Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ServiceInstallersMojo.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ServiceInstallersMojo.java?rev=372590&r1=372589&r2=372590&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ServiceInstallersMojo.java (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/ServiceInstallersMojo.java Thu Jan 26 11:28:11 2006
@@ -220,12 +220,12 @@
                 izPackCmd.execute();
             }
 
-//            if ( target instanceof InnoTarget )
-//            {
-//                InnoInstallerCommand innoCmd = null;
-//                innoCmd = new InnoInstallerCommand( this, ( InnoTarget ) target );
-//                innoCmd.execute();
-//            }
+            if ( target instanceof InnoTarget )
+            {
+                InnoInstallerCommand innoCmd = null;
+                innoCmd = new InnoInstallerCommand( this, ( InnoTarget ) target );
+                innoCmd.execute();
+            }
         }
     }
     
@@ -457,5 +457,11 @@
     public File getLicenseFile()
     {
         return this.licenseFile;
+    }
+    
+    
+    public File getSourceDirectory()
+    {
+        return this.sourceDirectory;
     }
 }

Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java?rev=372590&r1=372589&r2=372590&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java Thu Jan 26 11:28:11 2006
@@ -20,6 +20,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.Properties;
 
 import org.apache.directory.server.standalone.installers.MojoCommand;
@@ -30,7 +31,13 @@
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Exec;
+import org.apache.tools.ant.taskdefs.ExecTask;
+import org.apache.tools.ant.taskdefs.Execute;
+import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
 import org.apache.tools.ant.taskdefs.Touch;
+import org.apache.tools.ant.types.Commandline;
+import org.apache.tools.ant.types.Commandline.Argument;
 import org.codehaus.plexus.util.Os;
 
 
@@ -49,6 +56,7 @@
     private final Log log;
     
     private File innoCompiler;
+//    private File innoOutputFile;
     
     
     public InnoInstallerCommand( ServiceInstallersMojo mymojo, InnoTarget target )
@@ -68,7 +76,6 @@
      *   <li>Bail if target is not for windows or current machine is not windows (no inno compiler)</li>
      *   <li>Filter and copy project supplied inno file into place if it has been specified and exists</li>
      *   <li>If no inno file exists filter and deposite into place bundled inno template</li>
-     *   <li>Copy over the procrun executables with proper names for the application</li>
      *   <li>Bail if we cannot find the inno compiler executable</li>
      *   <li>Execute inno compiler it on the inno file</li>
      * </ol> 
@@ -76,7 +83,7 @@
     public void execute() throws MojoExecutionException, MojoFailureException
     {
         // -------------------------------------------------------------------
-        // Do some error checking first
+        // Step 1 & 4: do some error checking first for compiler and OS
         // -------------------------------------------------------------------
         
         if ( ! target.getOsFamily().equals( "windows" ) )
@@ -95,20 +102,68 @@
         }
         
         // -------------------------------------------------------------------
-        // Copy over the procrun binaries with new app names
+        // Step 2 & 3: copy inno file and filter 
         // -------------------------------------------------------------------
         
-        File prunsrvFile = new File( target.getLayout().getBinDirectory(), mymojo.getApplicationName() + ".exe" );
-        InputStream prunsrvIn = getClass().getResourceAsStream( "../prunsrv.exe" );
-        
+        // check first to see if the default install.iss file is present in src/main/installers
+        File defaultInnoConfigurationFile = new File( mymojo.getSourceDirectory(), "install.iss" );
+        if ( target.getInnoConfigurationFile() != null && target.getInnoConfigurationFile().exists() )
+        {
+            try
+            {
+                MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, target.getInnoConfigurationFile(), 
+                    innoConfigurationFile, true );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoFailureException( "Failed to filter and copy project provided " 
+                    + target.getInnoConfigurationFile() + " to " + innoConfigurationFile );
+            }
+        }
+        else if ( defaultInnoConfigurationFile.exists() )
+        {
+            try
+            {
+                MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, defaultInnoConfigurationFile, 
+                    innoConfigurationFile, true );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoFailureException( "Failed to filter and copy project provided " 
+                    + defaultInnoConfigurationFile + " to " + innoConfigurationFile );
+            }
+        }
+        else
+        {
+            InputStream in = getClass().getResourceAsStream( "install.iss" );
+            URL resource = getClass().getResource( "install.iss" );
+            try
+            {
+                MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, in, innoConfigurationFile, true );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoFailureException( "Failed to filter and copy bundled " + resource
+                    + " to " + innoConfigurationFile );
+            }
+        }
+
+        Execute task = new Execute();
+        String[] cmd = new String[] {
+            innoCompiler.getAbsolutePath(), innoConfigurationFile.getAbsolutePath()
+        };
+        task.setCommandline( cmd );
+        task.setSpawn( true );
+        task.setWorkingDirectory( target.getLayout().getBaseDirectory() );
+        int retval = 0;
         try
         {
-            MojoHelperUtils.copyBinaryFile( prunsrvIn, prunsrvFile );
+            retval = task.execute();
         }
         catch ( IOException e )
         {
-            throw new MojoFailureException( "Failed to extract bundled prunsrv.exe " + 
-                getClass().getResource( "../prunsrv.exe" ) + " into image destingation " + target.getLayout().getBinDirectory() );
+            throw new MojoFailureException( "Failed while trying to execute " + innoCompiler.getAbsolutePath() 
+                + ": " + e.getMessage() );
         }
     }
 

Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoTarget.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoTarget.java?rev=372590&r1=372589&r2=372590&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoTarget.java (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoTarget.java Thu Jan 26 11:28:11 2006
@@ -30,6 +30,7 @@
 public class InnoTarget extends Target
 {
     private File innoCompiler = new File( "C:\\Program Files\\Inno Setup 5\\ISCC.exe" );
+    private File innoConfigurationFile;
 
 
     public void setInnoCompiler(File innoCompiler)
@@ -41,5 +42,17 @@
     public File getInnoCompiler()
     {
         return innoCompiler;
+    }
+
+
+    public void setInnoConfigurationFile(File innoConfigurationFile)
+    {
+        this.innoConfigurationFile = innoConfigurationFile;
+    }
+
+
+    public File getInnoConfigurationFile()
+    {
+        return innoConfigurationFile;
     }
 }