(Note: I posted a variation of this response on a different StackExchange site for a similar question.)
lessmsi is a great tool that certainly works here if you're willing to pop open its GUI and do some manual investigation.
If you're looking for a quick fix, you can try:
lessmsi l -tProperty <msi_name>
Unfortunately, it is likely that the above command will not output the properties you're looking for (sidenote: the output is csv formatted).
One way to essentially guarantee that you get all the possible properties is to actually perform either an installation, repair, or uninstall with the MSI file and log the process. The following command records only the properties and nothing else:
<msi_name> /lp! <msi_property_logfile>
The above command is equivalent to:
msiexec /lp! <msi_property_logfile> /i <msi_name>
My preferred method, however, is to not actually install/remove/repair (and to simply extract instead). The advantages this method has over lessmsi is that it doesn't require a 3rd-party utility (i.e. lessmsi), and it doesn't require you to mess with any installations. Given that you have enough disk space to actually install the program, you can do:
msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>
Note that the <absolute_path_to_extract_to>
can point to a nonexistent directory (the command will create the directories necessary or fail).
If you hate the installation UI for whatever reason you can append the /qr
option, which will 'reduce' and possibly eliminate the UI without impairing the property logging process. Be warned however--if you go "lower" than the reduced UI (viz. /qb
|/passive
or /qn
|/quiet
), your <msi_property_logfile>
may be missing some properties.
Once the process has finished, you simply open up the logfile and note the lines beginning with Property(S):
/Property(C):
. Generally speaking, the parameters/properties that can be set for an install are logged in ALL CAPS; for example, ALLUSERS
can be set ALLUSERS=1
so that the installation is for all users.
So for the example just given, your unattended mode installation could look something like:
msiexec /i <msi_name> /passive ALLUSERS=1