Cataldo
Cataldo

Reputation: 585

How do you install an MSI with msiexec into a specific directory?

I want to install an MSI file with msiexec into a specific directory. I am using:

msiexec /i "msi path" INSTALLDIR="C:\myfolder" /qb

Using "INSTALLDIR" is not working properly because the MSI is installed into the default path and not into the specified path.

Upvotes: 56

Views: 205065

Answers (13)

ezzadeen
ezzadeen

Reputation: 1063

The property depends on the software used to author the setup.

When you have problems, use the command-line argument /lv log.txt to dump verbose logs. The logs would tell you if there is a property change that would override your own options. If you already installed the product, then a second run might just update it without changing the install location. You will have to uninstall first (use the /x option).

Another property used is INSTALLLOCATION.

Upvotes: 16

tsilvs
tsilvs

Reputation: 464

Here's my attempt to install .msi using msiexec in Administrative PowerShell.

I've made it 7 times for each of 2 drives, C: and D: (14 total) with different arguments in place of ARG and the same desirable path value.

Template: PS C:\WINDOWS\system32> msiexec /a D:\users\username\downloads\soft\publisher\softwarename\software.msi /passive ARG="D:\Soft\publisher\softwarename"

ARGs:

  • TARGETDIR
    • Works OK-ish, but produces redundand ProgramFilesFolder (with an additional folders similar to the default installation path, e.g. D:\Soft\BlenderFoundation\Blender\ProgramFilesFolder\Blender Foundation\Blender\2.81\) and a copy of the .msi at the target folder.
  • INSTALLDIR, INSTALLPATH, INSTALLFOLDER, INSTALLLOCATION, APPLICATIONFOLDER, APPDIR
  • When running on the same drive as set in the parameter: installs on this drive in a default folder (e.g. D:\Blender Foundation\Blender\2.81\)
  • When running from a differnet drive: seems to do nothing

You may try ARPINSTALLLOCATION (docs).

Upvotes: 0

Ciprian
Ciprian

Reputation: 3565

Use TARGETDIR instead of INSTALLDIR. Note that the quote marks for TARGETDIR property are only around the path in the case of spaces.

msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb

Source: https://learn.microsoft.com/en-us/windows/win32/msi/targetdir

Upvotes: 57

sriramsm04
sriramsm04

Reputation: 365

I tried TARGETDIR, INSTALLLOCATION and INSTALLDIR args and still it installed in the default directory. So I viewed the log and there is this arg where it sets the Application Directory and it is being set to default.

MSI (s) (50:94) [09:03:13:374]: Running product '{BDAFD18D-0395-4E72-B295-1EA66A7B80CF}' with elevated privileges: Product is assigned.
MSI (s) (50:94) [09:03:13:374]: PROPERTY CHANGE: Adding APPDIR property. Its value is 'E:\RMP2'.
MSI (s) (50:94) [09:03:13:374]: PROPERTY CHANGE: Adding CURRENTDIRECTORY property. Its value is 'C:\Users\Administrator'.

So I changed the command to have APPDIR instead of the args mentioned above. It worked like a charm.

msiexec /i "path_to_msi" APPDIR="path_to_installation_dir" /q

Add /lv if you want to copy the installation progress to a logfile.

Upvotes: 1

David Schwartz
David Schwartz

Reputation: 201

InstallShield 12

INSTALLDIR represents the main product installation directory for a regular Windows Installer–based (or InstallScript MSI) installation, such as the end user launching Setup.exe or your .msi database.

TARGETDIR represents the installation directory for an InstallScript installation, or for an administrative Windows Installer based installation (when the user runs Setup.exe or MsiExec.exe with the /a command-line switch).

In an InstallScript MSI project, the InstallScript variable MSI_TARGETDIR stores the target of an administrative installation.

Source: INSTALLDIR vs. TARGETDIR

Upvotes: 18

Colibri
Colibri

Reputation: 733

In my case all of them did not work and finally it was

msiexec /i "msinamebla.msi" INSTALLFOLDER="C:\test\" /qb

I checked the log.txt as described by ezzadeen and found "INSTALLFOLDER" in there.

Upvotes: 9

Sharvin K
Sharvin K

Reputation: 715

Use APPLICATIONFOLDER="path" for latest msiexec

Upvotes: 2

ttoomm
ttoomm

Reputation: 11

This one worked for me too

msiexec /i "msi path" INSTALLDIR="D:\myfolder" /q

I had tried two other iterations and both installed in the default C:\Program Files

INSTALLDIR="D:\myfolder" /q got it installed on the other drive.

Upvotes: 1

Moscow Boy
Moscow Boy

Reputation: 1621

msiexec /i "msi path" INSTALLDIR="C:\myfolder" /q

Only this variant worked well.

Upvotes: 11

lcg1ant
lcg1ant

Reputation: 1

If you've used Advanced Installer to build your .msi you will want to use APPDIR=

Upvotes: 0

p4ndepravity
p4ndepravity

Reputation: 63

for my msi, I had to set DEFAULTPATHC="D:\myfolder" because later in the installation process, both INSTALLDIR and TARGETDIR were reset to reflect the value in DEFAULTPATHC

Upvotes: 1

xiaoym
xiaoym

Reputation: 41

Actually, both INSTALLPATH/TARGETDIR are correct. It depends on how MSI processes this.

I create a MSG using wixToolSet. In WXS file, there is "Directory" Node, which root dir maybe like the following:

<Directory Id="**TARGETDIR**" Name="SourceDir">;

As you can see: Id is which you should use.

Upvotes: 4

Shibiraj
Shibiraj

Reputation: 769

This should work:

msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb

Upvotes: 3

Related Questions