Search code examples
windows-installerinstallshieldmsitransformmsitools

How to pre-set MSI SecureCustomProperties that are not defined in Properties to allow silent installation?


An particular vendor's MSI is usually installed via an EXE wrapper, but I'm trying to deploy using silent installation via GPO. I am struggling to pre-set the SecureCustomProperties.

The vendor documents UPPERCASE command-line options that can be passed to the EXE wrapper, which I assume passes them on to the MSI. Using Orca, I can see that the MSI's Property table contains SecureCustomProperties. This key's value is a semicolon-delimited, UPPERCASE list of all the documented parameters.

However, each individual parameter does not have a corresponding key in Properties. How can I pre-set these?

According to How to make better use of MSI files

You can find most properties listed in the MSI file's Property table, but it is also possible that some properties can be set that are not defined in the Property table. In most cases this relates to properties being set only from the setup GUI (indicates a setup design error in most cases). All properties should be defined in the property table in a properly authored package.

Can I just add each parameter as a key in Properties and add my custom value? If so, should I leave the parameters in SecureCustomProperties?

Example:

SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4

DBHEADER is not a key in Properties. How do I set the value of DBHEADER?


Solution

  • By trial and error, I found that using Orca to add the missing keys to the Property table worked.

    Example:

    SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4
    

    DBHEADER does not exist as a key (row) in Property, so we can't set it.

    Solution:

    Add key DBHEADER with my desired value (Live) to Property table.

    Adding row with Orca

    Resulting new row added

    Then generate and use the resulting MSI Transform as described elsewhere.