Issue #11870 has been updated by Josh Cooper.

This was merged in to 3.x in 
<https://github.com/puppetlabs/puppet/commit/b273c77087dc16371d7f67f53d5c570162bc0559>
 Additional fixes were merged in 33c671, 167f34, and c1ac7c

<pre>
    Previously, puppet could only manage MSI packages on Windows. This commit
    extends the `:windows` package provider so that it can query, install, and
    uninstall executable packages. The logic for this is borrowed from[1].
    
    Basically, puppet will only manage executable packages that have the
    following attributes:
    
        Non-empty DisplayName
        Non-empty UninstallString
        Are not SystemComponents
        Are not WindowsInstaller
        Names don't start with KBXXXXXX
        Are not part of another product (ParentKeyName)
        Are not Security Update, Update Rollup or Hotfix
    
    For example, to install Java silently:
    
        package { 'Java(TM) 7 Update 5':
          ensure          => installed,
          source          => '...\jre-7u5-windows-i586.exe',
          install_options => [
            '/s', '/v/qn" ADDLOCAL=jrecore REBOOT=Suppress JAVAUPDATE=0"'
          ]
        }
    
    [1] http://community.spiceworks.com/how_to/show/2238
</pre>

The windows package provider supports both single argument and key-value 
arguments for install_options:

<pre>
    Previously, the MSI provider contained logic for accepting a hash of
    `install_options`. The provider's install method flattened the hash pairs
    as:
    
        "key1=value1 key2=value2"
    
    and passed that to msiexec.exe. This worked fine for MSI public
    properties, but does not account for passing single arguments.
    
    This commit refactors the provider to use the more generic version of
    `install_options`, which expects an array of values. For example, if a
    manifest contains:
    
        [ '/S', { 'INSTALLDIR' => 'C:\Program Files' } ]
    
    then msiexec will be invoked with:
    
        "/S INSTALLDIR=\"C:\\Program Files\""
    
    The only change in behavior is that the MSI provider will now accept
    single arguments and pass those onto msiexec.
</pre>

The windows package provider now supports uninstall_options using the same 
format as install_options:

<pre>
    Previously, the MSI provider was unable to specify uninstall_options.
    This isn't typically an issue, since Windows stores the command and
    arguments necessary to uninstall the package in the `UninstallString`
    registry value associated with the package.
    
    But there are some MSI packages that require this functionality, e.g. to
    specify VMware Tools modules to uninstall:
    
       msiexec.exe /x <productcode> REMOVE=Sync,VSS,...
    
    This commit adds an `uninstall_options` parameter to the package type and
    updates the MSI provider to use it. It has the same format as
    `install_options`.
</pre>

In addition the `msi` provider is deprecated on windows

<pre>
    The `:msi` package provider is being deprecated and replaced with the
    `:windows` provider. Attempting to install or uninstall a package using
    the msi provider will cause puppet to issue a deprecation warning.
</pre>
----------------------------------------
Feature #11870: Support other types of windows packages
https://projects.puppetlabs.com/issues/11870#change-69114

Author: Josh Cooper
Status: Merged - Pending Release
Priority: Normal
Assignee: Josh Cooper
Category: windows
Target version: 3.0.0
Affected Puppet version: 
Keywords: windows msi installshield nullsoft wise innosetup
Branch: https://github.com/puppetlabs/puppet/pull/1008


Puppet only support MSI packages on Windows that can be installed via `msiexec` 
We should support other types of packages created from:

* InstallShield
* Wise
* MS Hotfixes
* NullSoft
* InnoSetup

One issue is that many of these are self-extracting executables. Another issue 
is that we would need to introspect the package to determine what set of 
command line options are required to perform a silent install and supress 
reboots. See <http://unattended.sourceforge.net/installers.php>


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to