Awesome.... I've generally just used telnet to get to the target machine and then installed from command-line using msiexec....

On 7/5/06, Max Shcherbina <[EMAIL PROTECTED]> wrote:
  Hi,

  Not pretending to invent something truly unique I wanted to post this
code anyway with hope that someone might find it useful.

  The end product of our build is a bunch of MSI files and before
pushing them to QA we usually perform basic testing of complete
application at the integration environment. This environment consists
from half a dozen machines which emulate production environment and
allow us to run our automated smoke-test suit.

The remote deployment question was discussed in this conference quite
a few times and the most common suggestion I believe was to use
variations of remote exec which in our case did not provided enough
feedback information if something went wrong. What I opted out for is
to use WMI components from System.Management namespace and couple of
simple C# scripts. WMI objects necessary for the task are supplied with
Windows servers and Windows XP Pro as well so you don't need to look
for third party tools and I included sample script in the email:

<script language="C#">
    <references>
            <includes name="System.Management.dll"/>
    </references>
    <imports>
        <import name=" System.Management"/>

    </imports>
    <code><![CDATA[

    public static void ScriptMain(Project project) {
        try {

            project.Log(Level.Info, "Target server: {0}",
project.Properties["deploy.remotesvr"]);
                ManagementScope scope = new
ManagementScope(project.Properties["deploy.remotesvr"]+"\\root\\cimv2");
                scope.Connect ();

            uninstall(scope, project,
project.Properties["deploy.remotesvr.product"]);

            install(scope, project
                , project.Properties["deploy.remotesvr.msipath "]
                  + project.Properties["msi.name"]
                , project.Properties["deploy.remotesvr.targetdir"]);

        } catch (Exception ex) {
            project.Log(Level.Error, ex.ToString());
            throw;
        }
    }

    public static void uninstall(ManagementScope scope, Project
project, string product) {
        try {
            project.Log(Level.Info, "\nStart removing {0}", product);

            SelectQuery query = new SelectQuery("select * from
Win32_Product where name = '" + product + "'");

            ManagementObjectSearcher searcher = new
ManagementObjectSearcher(scope, query);

            foreach (ManagementObject envVar in searcher.Get())
            {
                project.Log(Level.Info , "Uninstalling {0}",
envVar["Name"]);
                object res = envVar.InvokeMethod("Uninstall", null);
                project.Log(Level.Info, "Uninstall result {0}", res);
            }

            project.Log(Level.Info, "Uninstall completed for " +
product);
        } catch (Exception ex) {
            project.Log(Level.Warning, ex.ToString());
        }
    }

    static void install(ManagementScope scope, Project project, string
msi, string targetDir) {

        try {

            project.Log(Level.Info, "\nInstalling " + msi + " \n into "
+ targetDir);
            ManagementClass installer = new ManagementClass(scope, new
ManagementPath("Win32_Product"), new ObjectGetOptions());
            object[] methodArgs = {msi, "TARGETDIR=" + targetDir,
true};
            object res = installer.InvokeMethod("Install", methodArgs);

            if ((UInt32)res != 0)

                throw new Exception("Install error " + res.ToString ());

            else

                project.Log(Level.Info, "Succesfully installed {0}",
msi);
        } catch (Exception ex) {

            project.Log(Level.Error, ex.ToString());

        }

    }
    ]]></code>
</script>


Thank you,
--Max



Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users



--
Shmarya
-----------------------------------------------------------
[EMAIL PROTECTED] - http://idp.shmarya.net
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to