MSI and Cmd-line examples

MSI support

Adobe Acrobat and Adobe Reader installers are developed using standard Windows Installer technology and Microsoft Installer (MSI) commands were developed by Microsoft.

The required MSI version is 3.1 or higher.

MSI best practices

  • When installing over an existing product, remove the old product first in a separate action.

  • When scripting MSI actions, do not use RemoveExistingProducts after InstallFinalize. Doing so results in the installer updating files before removing the old application, and in the event of application removal failure, the installation may be incomplete.

  • Do not use REINSTALLMODE=amus which forces all files to be reinstalled regardless of checksum or version. Such usage could result in a mixture of files from the old and new products. The recommended properties are vomus.

  • Use TARGETDIR on the command line or the AIP user interface to specify an install location other than C: when creating an AIP.

MSI usage

Adobe has tested and supports the installation of Acrobat products using the command line. You can use command line methods to install software in many ways, such as typing commands at a command prompt or in a batch script. When using the bootstrapper, command line parameters can be sent to msiexec from within the Setup.ini as well as on the cmd line.

The syntax for msiexec is as follows:

  • Windows Installer command-line options are not case-sensitive.

  • Brackets ([]): Optional items

  • Braces ({}); Set of choices separated by a | from which the user must choose only one. For example: {black|white}:

MSI switches

For Microsoft documentation, see https://msdn.microsoft.com/en-us/library/Aa367988.

msiexec command line parameters

Command

Description

{ /?| /h}

Displays the Windows Installer version and copyright information.

/a

Applies the administrative installation option.

/f

For product repair. Enables one or more of the command-line options below:

  • p: Reinstalls only if file is missing.

  • o: Reinstalls if file is missing or if an older version is installed.

  • e: Reinstalls if file is missing or an equal or older version is installed.

  • d: Reinstalls if file is missing or a different version is installed.

  • c: Reinstalls if file is missing or the stored checksum does not match the calculated value.

  • a: Forces all files to be reinstalled.

  • u: Rewrite all required user-specific registry entries.

  • m: Rewrites all required computer-specific registry entries.

  • s: Overwrites all existing shortcuts.

  • v: Runs from source and re-caches the local package

/g

Identifies the language. Syntax: /g LanguageID

/i

Installs or configures a product.

/j

Advertises a product. If you want to install the application with elevated privileges, use /jm. Syntax:

  • msiexec /j [{u | m}] Package

  • msiexec {u | m} Package /t TransformList

  • msiexec {u | m} Package /g LanguageID

  • m: Advertises to all users of the computer.

  • u: Advertises to the current user.

/L

Specifies the path to the log file. To include the v option in a log file using the wildcard flag, type /L*v at the command prompt. The Windows Installer log file options can also be used with the uninstall and repair processes. For example, use /L*v to set verbose logging.

  • Syntax: msiexec /L [i][w][e][a][r][u][c][m][p][v][+][!]LogFile.txt

  • i: Logs status messages.

  • w: Logs nonfatal warnings.

  • e: Logs all error messages.

  • a: Logs startup of actions.

  • r: Logs action-specific records.

  • u: Logs user requests.

  • c: Logs initial user interface parameters.

  • m: Logs out-of-memory.

  • p: Logs terminal properties.

  • v: Logs verbose output. To use v, specify /L*v.

  • +: Appends to existing file.

  • !: Flushes each line to the log.

  • *: Logs all information except for the v option. This is a wildcard.

/p

Applies an update.

/q

Sets the user interface level. The modal box is not displayed if the user cancels the installation.

  • Syntax: msiexec /q{n | b | r | f | n+ | b+ | b-}

  • /qn: Displays no user interface.

  • /qb: Displays a basic user interface.

  • /qr: Displays a reduced user interface with a modal dialog box displayed at installation end.

  • /qf: Displays the full user interface with a modal dialog box displayed at the end.

  • /qn+: Displays no user interface, except for a modal dialog box displayed at the end.

  • /qb+-: Not supported.

  • /qb+!: Displays a basic user interface with a modal dialog box displayed at the end.

  • /qb-!: Displays a basic user interface with no modal dialog boxes.

    Both qb-! and qb!- provide a way to prevent users from canceling the install via a cancel button.

/t

Applies transform to advertised package. Syntax: /t TransformList

/x

Uninstalls a product.

/y

Calls the system API DllRegisterServer to self-register modules passed on the command line.

/z

Calls the system API DllUnRegisterServer to unregister modules passed on the command line.

Package Code

Specifies the globally unique identifier of the Windows Installer package. For Acrobat products, this is the GUID.

Package

Not supported. Specifies the name of the Windows Installer package file

/sAll

Run installer in silent mode.

/sPB

Silent mode with minimum UI: show the progress bar only.

/rs

Reboot Suppress. Setup.exe will not initiate reboot even if it is required.

/rps

Reboot Prompt Suppress. If reboot is required, the system restarts without warning.

/ini “PATH”

Relative or absolute path to an alternative (different) Bootstrapper INI file. The CmdLine of alternative INI will be ignored.

/sl “LANG_ID”

Set Language, where LANG_ID is the decimal code of the destination installation language. Use it only for the multilingual installer, and make sure that the corresponding language transform file exist in the setup directory. If /sl “LANG_ID” is not set and you are running the multilingual installer interactively (not silently), ‘Choose Setup Language’ dialog will be displayed.

/msi[Command line]

Identifies the portion of CmdLine for additional MSIEXEC command line parameters. Everything following /msi is passed to MSIEXEC without analyzing and without any changes.

MSI properties

You can specify MSI properties at install time; for example, to set a company name or suppress rebooting. For a complete list, refer to Microsoft documentation.

Supported MSI properties

MSI installer properties

Property

Description

ADDLOCAL

A list of comma delimited features to install locally. The features must be present in the Feature column of the Feature Table. To install all features locally, use ADDLOCAL=ALL on the command line rather than the Property Table to avoid creating an installed package that cannot be correctly removed.

ALLUSERS

Determines where configuration information is stored. It is a per machine setting and is set to 1 by default for both Acrobat and Reader.

COMPANYNAME

The name of the company installing the product.

INSTALLDIR

Specifies a non-default installation directory.

INSTALLLEVEL

The property specifies an installation level threshold. A feature is installed only if the value in the Level field of the Feature table is less than or equal to the current INSTALLLEVEL value. 100 is the default install level.

REBOOT

Force or suppress rebooting.

REINSTALL

List of features to reinstall. Setting this property results in a required reboot for 9.x. For 10.x products, let the MSI engine decide what to reinstall; doing so should result in fewer reboots.

REINSTALLMODE

A string containing letters that specify the type of reinstallation to perform. Use of the vomus switches is the recommended configuration.

REMOVE

List of features to be removed. You can pass either ReaderBrowserIntegration or AcrobatBrowserIntegration to REMOVE when a product is already deployed and a subsequent deployment requires disabling browser integration.

TARGETDIR

Specifies the root destination directory for the installation. TARGETDIR must be the name of one root in the Directory table. There may be only a single root destination directory. During an administrative installation this property specifies the location to copy the installation package. Do not create an AIP at the root directory. Use the AIP UI or this property on the command line to install from a directory other than C:, D:, etc.

TRANSFORMS

Property that is used to specify what transform (.mst) files should be applied to the package. In some cases, this will be the MST you created via the Customization Wizard. Use with /i, not /p.

USERNAME

The username of the person performing the installation.

Unsupported MSI properties

  • SHORTFILENAMES is no longer supported. Microsoft has removed this property from the Windows 7 Logo Requirements.

Troubleshooting msiexec

When using msiexec, if you receive an “Incorrect command line parameters” error message, verify that:

  • Your syntax is correct.

  • There is a space before the log file name if you use the syntax for writing a log file.

  • You have not placed a /qn switch between the /i switch and the name of the MSI file.

Note

For more information about msiexec options, refer to https://technet.microsoft.com/en-us/library/cc759262(WS.10).aspx#BKMK_Install.

Bootstrapper installation

The bootstrapper Setup.exe file uses setup.ini as its configuration file. As you customize the installer with the Wizard, the Setup.ini file automatically updates. The Setup.exe file uses Setup.ini as it’s configuration file. Before deployment, open Setup.ini, verify it contains all the properties you need, and edit it as neccessary.

Setup.ini contains two sections:

  • [Startup]: Setup.exe first executes the Adobe flags for CmdLine. Do not place Adobe properties or MSI switches here; for example, you can use /sAll but not /qb!+ in this section.

  • [Product] Setup.exe then reads the [Product] section. There may be multiple [Product] sections depending what the EXE should invoke (other MSI’s or EXE’s). The CmdLine should only contain values supported by the item the EXE invokes. For example, when invoking an MSI (msi=AcroPro.msi), you can only use space-separated Adobe properties (flag/value pairs connected by an = sign) and MSI switches; for example, you can use /qb!+ but not /sAll in this section.

MST usage in Setup.ini

[Startup]
CmdLine=/sAll /sl "1031"
RequireOS=Win XP

[Product]
CmdLine=TRANSFORMS="AcroPro.mst" /qb!+
msi=AcroPro.msi
Languages=1033;1031
1033=English (United States)
1031=German (Germany)

Command line examples

These examples demonstrate different ways to install Acrobat products using the command line. Keep in mind the following:

  • The examples use specific products and versions. Modify the command line to suit your environment, changing paths and file names as appropriate.

  • It is possible to apply patches during an initial installation.

  • For multilingual installers, use the selected language transform in the command line (for example, 1036.mst for the French language).

  • Transforms in the installer media directory do not require fully qualified paths in the command.

  • Patches do require fully qualified paths.

Note

As of July 2010, Reader update installers on the Reader Download Center for Tier 1 are chained by default. If you are downloading the product from the RDC rather than the download site, just download the latest file and you’ll get all patches in one file.

Repairing the install

C:\Windows\system32\msiexec.exe /I {AC76BA86-1033-FFFF-7760-0C0F074E4100} REINSTALL="ALL" REINSTALLMODE="omus" /qb

Listing installed updates

Occasionally, certain bugs or features may be impacted by a specific OS version. You can use a Windows utility to list installed Windows udpates.

After installing the utility, run the following:

wmic qfe list full /format:table >c:\updates.txt

Installing Acrobat 2019 with logging

The silent install below creates an install log. Note that IGNOREVCRT64 can only be used when the C++ x64 Runtime is not required.

msiexec /I AcroPro.msi IGNOREVCRT64=1 transforms=AdobeAcrobatProfDC2019-191220034-100-R01-B01.mst /qn /l*v %applogsc%\ AdobeAcrobatProfDC2019-191220034-100-R01-B01_Install.log

Language selection

You can use the LANG_LIST property to specify languages. Specify both the language code and the language-specific MST:

msiexec /i <path\AcroPro.msi> LANG_LIST=en_US TRANSFORMS="1033.mst"  /qb

For details, see Adobe Properties

Creating an AIP

To create an administrative installation for a customized installer, use /a and TRANSFORMS. For example, the following installs Acrobat Pro with an MST file created with the Customization Wizard:

msiexec /a <path\AcroPro.msi> TRANSFORMS="AcroPro.mst"

To create an administrative installation for a major release installer and a patch, use /a and /p. For example, the following installs Acrobat Pro 10.0 with the 10.1.0 patch:

msiexec /a <path\AdbeRdr1000_lang_ID.msi> /p AdbeRdrUpd1010_en_US.msp

Note

It’s always a good idea to keep the files in the same directory and cd to that directory so that you can run the commands from there.

TRANSFORMS and .mst

Installer modifications created in the Customization Wizard are saved to an MST file. The MST must be referenced in the .ini file or on the command line. This example installs a customized version of Acrobat Professional, displays a basic user interface, and enables verbose logging.

Installing with an MST

msiexec /i <path\AcroPro.msi> TRANSFORMS="AcroPro.mst" /qb /L*v c:\acrobat.log

LEIDs and post-install prtk usage

Once an ETLA serial is provided, the LEID changes for unserialized commands. For both tracks, it becomes V7{}AcrobatETLA-12-Win-GM (on Windows) and V7{}AcrobatETLA-12-Mac-GM (on Macintosh). For example, you would use the “ESR” LEID version to initially serialize, and you would use the “ETLA” version to deactivate or perform any other action with the prtk utility.

Silent uninstalls

A silent removal runs without any dialog boxes to show the user that the removal is running. All products use the same command line and the same installer file for silent updates:

msiexec /x {[Package Name | Product Code]} /qn

Note

You must include the braces in the command line. An MSI package name (e.g. AcroRead.msi) can be substituted for the Product Code. For Acrobat products, the Product Code is the GUID.

Browser integration

Pass either ReaderBrowserIntegration or AcrobatBrowserIntegration to REMOVE when a product is already deployed and a subsequent deployment requires disabling browser integration. For example:

msiexec /i {AC76BA86-7AD7-1033-7B44-A91000000001} REMOVE=ReaderBrowserIntegration /q

To re-enable Browser Integration, use ADDLOCAL:

msiexec /i {AC76BA86-7AD7-1033-7B44-A91000000001} ADDLOCAL=ReaderBrowserIntegration /q

Removing product features

Because Acrobat products support MSI technology, it is possible to the use the REMOVE property to uninstall any component as described in the Microsoft documentation: “The value of the REMOVE property is a list of features delimited by commas that are to be removed. The features must be present in the Feature column of the Feature table. Note that if you use REMOVE=ALL on the command line, the installer removes all features having an install level greater than 0. In this case, the installer does not remove features having an install level of 0. For more information about the install level of features see https://msdn.microsoft.com/en-us/library/windows/desktop/aa371194%28v=vs.85%29.aspx.”

Removing any feature via REMOVE that is not specifically identified as a unique component in the user interface during a custom install is not supported. Moreover, some components have subcomponents which don’t appear in the UI, and admins are advised to inspect the installer tables and test their installs prior to deployment.

The command line is in the form of:

Msiexec /i <Package.msi|ProductCode> REMOVE="(product name)"

Where <Package.msi|ProductCode> is either the full path to the original MSI file or the ProductCode of this product.

APTEE example for products

For standalone Acrobat deployments which not part of a Creative Cloud packager install, download the Adobe Provisioning Toolkit Enterprise Edition (APTEE). The APTEE is a platform-specific executable file:

Continuous track

For more details, refer to the PRTK documentation.

Serialization; machine online

Use following PRTK command to serialize Acrobat with ETLA serial number:

adobe_prtk --tool=Serialize --leid=V7{}AcrobatCont-12-Win|Mac-GM --serial=<ETLA serial number> [--regsuppress=ss]

Un-serialization; ETLA serial license; machine online

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatETLA-12-Win|Mac-GM --deactivate

Note

Once an ETLA serial is provided, the LEID changes for unserialized commands. For both tracks, it becomes V7{}AcrobatETLA-12-Win-GM (on Windows) and V7{}AcrobatETLA-12-Mac-GM (on Macintosh). For example, you would use the “ESR” LEID version to initially serialize, and you would use the “ETLA” version to deactivate or perform any other action with the prtk utility.

Un-serialization; Pro Subscription license; machine online

adobe_prtk --tool=UnSerialize --leid=V6{}AcrobatPro-AS2-Win|Mac-GM --deactivate

Un-serialization; Standard Subscription license; machine online

adobe_prtk --tool=UnSerialize --leid=V6{}AcrobatStd-AS2-Win|Mac-GM --deactivate

Replace an existing serial number

adobe_prtk --tool=ReplaceSN --serialize=LEID --serial=<new serial number>

Type 1 Exception; machine offline

The command to generate request code for both Windows and Mac is:

adobe_prtk --tool=Type1Exception --generate --serial=<ETLA serial number>

Type1 Exception; machine offline

Note

Cannot be used with Acrobat Classic 2020.

The command to get an accept request code for both Windows and Mac is:

adobe_prtk --tool=Type1Exception --accept --serial=<ETLA serial number>
--responsecode=<response code generated from an online machine>
--leid=V7{}AcrobatCont-12-Win|Mac- GM

Type1 Exception; Un-serialize; machine offline

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatCont-12-Win|Mac-GM --deactivate

Type 2 Exception; Command to generate prov.xml; machine offline

adobe_prtk --tool=VolumeSerialize --generate --serial=<ETLA serial>
--leid=V7{}AcrobatCont-12-Win|Mac-GM [--regsuppress=ss] [--eulasuppress]
[--provfilepath=<Absolute path>]

Type 2 Exception; machine offline

On Windows and Mac, serialize Acrobat using the prov.xml as follows:

adobe_prtk --tool=VolumeSerialize [--provfile=<Absolute path to prov.xml>] [--stream]

Type 2 Exception: Un-serialize Acrobat

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatETLA-12-Win|Mac-GM --deactivate

Command to suppress EULA

adobe_prtk --tool=EULA --leid=V7{}AcrobatCont-12-Win|Mac-GM --eulasuppress

Classic track

Serialization; machine online

Use following PRTK command to serialize Acrobat with ETLA/Perpetual serial number:

adobe_prtk --tool=Serialize --leid=V7{}AcrobatESR-12-Win|Mac-GM
--serial=<ETLA/Perpetual serial number> [--regsuppress=ss]

Un-serialization; ETLA license; machine online

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatETLA-12-Win|Mac-GM --deactivate

Un-serialization : Continuous (Retail/Volume) license; machine online

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatESR-12-Win|Mac-GM --deactivate

Un-serialization; Pro subscription license; machine online

adobe_prtk --tool=UnSerialize --leid=V6{}AcrobatPro-AS2-Win|Mac-GM --deactivate

Un-serialization; Standard Subscription license; machine online

adobe_prtk --tool=UnSerialize --leid=V6{}AcrobatStd-AS2-Win|Mac-GM --deactivate

Type 1 Exception; ; machine offline

Generate a request code with the following (both Win and Mac):

adobe_prtk --tool=Type1Exception --generate --serial=<ETLA/Perpetual serial number>

Type1 Exception; machine offline

Command to accept request code

adobe_prtk --tool=Type1Exception --accept --serial=<ETLA/Perpetual serial>
--responsecode=<response code generated from an online machine>
    --leid=V7{}AcrobatESR-12-Win|Mac-GM

Type1 Exception : Un-serialize (ETLA/Perpetual serial); machine offline

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatESR-12-Win|Mac-GM --deactivate

Type 2 Exception; generate prov.xml; machine online

adobe_prtk --tool=VolumeSerialize --generate --serial=<ETLA/Perpetual serial>
--leid=V7{}AcrobatESR-12-Win|Mac-GM [--regsuppress=ss] [--eulasuppress]
[--provfilepath=<Absolute path >]

Type 2 Exception; serialize Acrobat with prov.xml; machine offline

adobe_prtk --tool=VolumeSerialize [--provfile=<Absolute path to prov.xml>] [--stream]

Type 2 Exception; Un-serialize Acrobat; ETLA license

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatETLA-12-Win|Mac-GM --deactivate

Type 2 Exception; Un-serialize Acrobat; Continuous track & volume license

adobe_prtk --tool=UnSerialize --leid=V7{}AcrobatESR-12-Win|Mac-GM --deactivate

Suppress EULA

adobe_prtk --tool=EULA --leid=V7{}AcrobatESR-12-Win|Mac-GM --eulasuppress