1

So I am trying to run a quite installation, with my msi, and it seems like I can easily pass a number for a parameter that I have, but I can't seem to pass in a string...I tried using single quotes ' and double quotes "

msiexec /i 'My Installer.msi' /quiet JREPATH="c:\\BLA BLA"

This and also the single quotes return this :

enter image description here

Now according to this article : https://learn.microsoft.com/en-us/windows/desktop/msi/command-line-options

it should work...

Property values that are literal strings must be enclosed in quotation marks. Include any white spaces in the string between the marks.

msiexec /i A:\Example.msi PROPERTY="Embedded White Space"

There is no problem with the MSI, I assume this because if i pass a number..it works...

msiexec /i 'My Installer.msi' /quiet JREPATH=3

LATER EDIT:

It seems that the problem appears when I have a space in the value of the parameter..for example something like the example below works :

msiexec /i "WKFS ReportGenerator.msi" /quiet JREPATH="c:\\;;BLA"

This however doesn't:

msiexec /i "WKFS ReportGenerator.msi" /quiet JREPATH="c:\\;;BLA a"

LATER EDIT 2:

These commands including spaces in the value work if using a simple cmd instead of PowerShell..

Teshte
  • 624
  • 1
  • 7
  • 26
  • Is there a reason enclosing the MSI file name with single instead of double quotation marks? – Klaus Gütter Nov 23 '18 at 05:29
  • @KlausGütter Not really...I am using PowerShell, and from my observations it doesn't make any difference if single or double quotation marks are used.. – Teshte Nov 23 '18 at 07:32
  • @Teshte Updated my answer below with some information on Heath Stewart's PowerShell Modules for MSI. – Stein Åsmul Nov 23 '18 at 18:58

2 Answers2

1

If you invoke from Powershell, you should use the call operator & This should then also work with parameters enclosed in quotes:

& msiexec /i `"My Installer.msi`" /quiet JREPATH=`"c:\BLA BLA`"
Klaus Gütter
  • 11,151
  • 6
  • 31
  • 36
0

UPDATE: Since this was related to PowerShell. See Windows Installer PowerShell Module on github.com (scroll down for description, use releases tab for download). I haven't really tested it much, but it is from Heath Stewart - Microsoft Senior Software Engineer (github).

Brief, inline sample:

install-msiproduct .\example.msi -destination (join-path $env:ProgramFiles Example)

The below was written before I realized that this was related to PowerShell.


Quick Suggestion: Maybe try this command line:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log" JREPATH="c:\MyPath"

Get rid of the double \\ in the path you specify (could be enough), and use the old style /QN switch instead of the /quiet switch. Some elaboration and details below.


Silent Installation: What installer is this? Is it a vendor package? Some sort of Java application I presume? This is how to install a normal MSI file silently:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log"

Quick explanation:

/L*V "C:\Temp\msilog.log"= verbose logging
/QN = run completely silently
/i = run install sequence

msiexec.exe: There are two types of switches for msiexec.exe - the old fashioned ones such as /QN (Command-Line Options) for silent installation which matches the newer /quiet that you are using (Standard Installer Command-Line Options).

To add properties you do as you have already done, add it to the command line:

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" SERIALKEY="1234-1234" /qn

Some Further Links:

Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
  • ...See my updated question..It seems like the problem appears when I have a space in the value of the parameter...I also tried with `/qn` and the same issue appears.. – Teshte Nov 23 '18 at 07:49
  • also, the logging file is not generated when that window from the question appears..so there is no extra information that I can use from the logs..:( – Teshte Nov 23 '18 at 07:51