type=page
status=published
title=install-node-dcom
next=install-node-ssh.html
prev=install-node.html
~~~~~~

= install-node-dcom

[[install-node-dcom-1]][[GSRFM626]][[install-node-dcom]]

== install-node-dcom

Installs {productName} software on specified DCOM-enabled hosts

[[sthref1259]]

=== Synopsis

[source]
----
asadmin [asadmin-options] install-node-dcom [--help]
[--archive archive]
[--create={false|true}] [--save[={false|true}]
[--installdir as-install-parent]
[--windowsuser windows-user] [--windowsdomain windows-domain]
[--force={false|true}]
host-list
----

[[sthref1260]]

=== Description

The `install-node-dcom` subcommand installs {productName} software
on the hosts that are specified as the operand of the subcommand. This
subcommand requires the Distributed Component Object Model (DCOM) remote
protocol to be configured on the host where the subcommand is run and on
each host where the {productName} software is being installed. The
DCOM protocol is available only on Windows systems.

[NOTE]
====
To install {productName} software on hosts that use secure shell
(SSH), use the
link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)]
subcommand.
====

If necessary, the subcommand creates a ZIP archive of the
{productName} software from the installation where this subcommand
is run. The archive does not contain the `domains` directory or the
`nodes` directory. These directories are synchronized from the domain
administration server (DAS) when instances on nodes that represent the
hosts are created and started. The subcommand does not delete the
archive after installing the {productName} software from the archive
on the specified hosts.

If multiple hosts are specified, the configuration of the following
items is the same on all hosts:

* Base installation directory
* Windows user
* Windows domain

By default, the subcommand runs interactively and prompts for a password
to authenticate the Windows user on each host where the
{productName} software is being installed. To enable the subcommand
to run noninteractively, the following conditions must be met:

* The `--interactive` option of the
  link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
* The `--passwordfile` option of the `asadmin` utility must specify a
  password file.
* The password file must contain the `AS_ADMIN_WINDOWSPASSWORD` entry.

The subcommand does not modify the configuration of the DAS.

This subcommand is supported in local mode only.

[[sthref1261]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--archive`::
  The absolute path to the archive file of the {productName}
  software that is to be installed. If no archive file is specified, the
  subcommand creates an archive from the installation of
  {productName} software from which the subcommand is run. This
  archive is created in the home directory of the user that is running
  the command.
`--create`::
  Specifies whether the subcommand should create an archive file of the
  {productName} software to install.

  `false`;;
    No archive file is created. The subcommand installs the software
    from the existing archive file that the `--archive` option specifies
    (default).
  `true`;;
    The subcommand creates an archive file from the installation of
    {productName} software from which the subcommand is run.

`--save`::
  Specifies whether the archive file from which the software is
  installed is saved after installation.

  `false`;;
    The archive file is not saved. The subcommand deletes the file after
    installing the software (default).
  `true`;;
    The archive file is saved.

`--installdir`::
  The absolute path to the parent of the base installation directory
  where the {productName} software is to be installed on each host,
  for example, `C:\glassfish7`. If the directory does not exist, the
  subcommand creates the directory. +
  The user that is running this subcommand must have write access to the
  specified directory. Otherwise, an error occurs. +
  To overwrite an existing an installation of the {productName}
  software, set the `--force` option to `true`. If the directory already
  contains an installation and the `--force` option is `false`, an error occurs. +
  The default is the parent of the base installation directory of the
  {productName} software on the host where this subcommand is run.
`--windowsuser`::
`-w`::
  The user on the host where the {productName} software is to be
  installed that is to run the process for connecting through DCOM to
  the host. The default is the user that is running this subcommand.
`--windowsdomain`::
`-d`::
  The name of the Windows domain that contains the user that the
  `--windowsuser` option specifies. The default is the name of the host
  on which the subcommand is run.
`--force`::
  Specifies whether the subcommand overwrites an existing installation
  of the {productName} software in the directory that the
  `--installdir` option specifies. Possible values are as follows:

  `false`;;
    The existing installation is not overwritten (default).
  `true`;;
    The existing installation is overwritten.

[[sthref1262]]

=== Operands

host-list::
  A space-separated list of the names of the hosts where the
  {productName} software is to be installed.

[[sthref1263]]

=== Examples

[[GSRFM627]][[sthref1264]]

==== Example 1   Installing {productName} Software at the Default
Location

This example installs {productName} software on the hosts
`wpmdl1.example.com` and `wpmdl2.example.com` at the default location.

Some lines of output are omitted from this example for readability.

[source]
----
asadmin> install-node-dcom wpmdl1.example.com wpmdl2.example.com
Created installation zip C:\glassfish8107276692860773166.zip
Copying 85760199 bytes..........................................................
....................................
WROTE FILE TO REMOTE SYSTEM: C:/glassfish7/glassfish_install.zip and C:/glassfish7/unpack.bat
Output from Windows Unpacker:

C:\Windows\system32>C:

C:\Windows\system32>cd "C:\glassfish7"

C:\glassfish7>jar xvf glassfish_install.zip
 inflated: bin/asadmin
 inflated: bin/asadmin.bat
 inflated: glassfish/bin/appclient
 inflated: glassfish/bin/appclient.bat
 inflated: glassfish/bin/appclient.js
 inflated: glassfish/bin/asadmin
 inflated: glassfish/bin/asadmin.bat
...
 inflated: mq/lib/props/broker/default.properties
 inflated: mq/lib/props/broker/install.properties

Command install-node-dcom executed successfully.
----

[[sthref1265]]

=== Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1266]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]


