Josh, Thanks so much for the reply. I'll definitely give that a try.
I'm constantly impressed with the pace of Puppet development. I suppose that's what I get for trying to wade through master on Git. Cheers, Justin On Tue, Sep 25, 2012 at 12:12 PM, Josh Cooper <[email protected]> wrote: > Hi Justing, > > On Mon, Sep 24, 2012 at 11:28 PM, Justin Brown > <[email protected]> wrote: > > Nan, > > > > Thanks for the reply. That's certainly what the code and doc string > > indicate. However, I think that I may have encountered a Puppet bug, but > I > > don't know enough Ruby to troubleshoot much. > > > > Here's my new resource: > > > > package { "my_problematic_package.msi": > > ensure => present, > > provider => 'msi', > > install_options => ['/quiet', '/passive'], > > source => "C:/packages/my_problematic_package.msi", > > require => File["C:/packages/my_problematic_package.msi"], > > } > > > > err: /Stage[main]/Sia/Package[my_problematic_package.msi]/ensure: change > > from absent to present failed: Could not set 'present on ensure: > undefined > > method `include?' for nil:NilClass at > > /etc/puppet/modules/sia/manifests/init.pp:71 > > > > The close brace for the package resource is at line 71. > > > > I seems to be that the bug has to be at line 129 or 149 in package.rb, > but I > > ran added some debug statements, and neither "include?" statement is run. > > > > I'm not sure where to go from here. I suppose that using exec will be the > > most expedient, but I'd also like some help on troubleshooting this > problem, > > so I can properly report it. > > > > Thanks, > > J > > > > On Mon, Sep 24, 2012 at 9:10 PM, Nan Liu <[email protected]> wrote: > >> > >> On Mon, Sep 24, 2012 at 5:22 PM, jbrown <[email protected]> > wrote: > >> > Hello, > >> > > >> > I'm trying to install a few MSI packages on Windows, and I'm having > >> > trouble > >> > specifying options. > >> > > >> > Here is what I want to execute > >> > > >> > C:\packages\my_problematic_package.msi \quiet \passive > >> > > >> > As you can see, I'm trying to specify two arguments to the package, > but > >> > I > >> > can't figure out how to use the Puppet package resource to accomplish > >> > this. > >> > Install_options being a hash is causing me confusion. > >> > > >> > Here's my attempt at a resource definition: > >> > > >> > package { "my_problematic_package.msi": > >> > ensure => installed, > >> > provider => 'msi', > >> > source => "C:/packages/my_problematic_package.msi", > >> > install_options => '/quiet /passive', > >> > > >> > # Previous try as a hash > >> > # install_options => { " " => '/quiet /passive' }, > >> > > >> > require => File["C:/packages/my_problematic_package.msi"], > >> > } > >> > > >> > When I run this on the a Windows host, I get a help popup (same thing > >> > without any install_options defined) that is the same as running '\?'. > >> > Then, > >> > I get an error that says "the semaphore cannot be set again." Thinking > >> > that > >> > Puppet may think the package is installed, I re-ran it with "ensure => > >> > absent," which succeeded, but subsequent install attempts failed with > >> > the > >> > same error. > >> > > >> > The MSI is obviously executing because the help popup appears. It just > >> > seems > >> > to be running with the incorrect options. > >> > > >> > Could anyone help? > >> > >> Looking at the code it's expecting an array (of string or hash). I'm > >> not sure why the docs on the website shows just a hash, since the type > >> is not doing munging. > >> > >> install_options => ['\quiet', '\passive'], > >> > >> Might be a recent change, anyhow take a look at the inline > >> documentation in the source code: > >> > >> > https://github.com/puppetlabs/puppet/blob/master/lib/puppet/type/package.rb#L301 > >> > >> Thanks, > >> > >> Nan > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "Puppet Users" 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-users?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Puppet Users" 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-users?hl=en. > > The `install_options` package parameter in 2.7.x was intended to be > used for specifying MSI public properties. For example, from the > reference documentation for install_options[1]: > > package { 'mysql': > ensure => installed, > provider => 'msi', > source => 'N:/packages/mysql-5.5.16-winx64.msi', > install_options => { 'INSTALLDIR' => 'C:\mysql-5.5' }, > } > > The msi package provider will transform the hash pair into > INSTALLDIR='c:\mysql-5.5' on the command line, and will automatically > quote either the key or value if it contains spaces -- to handle > things like INSTALLDIR='c:\Program Files\Vendor\Application' > > In 3.0 the `install_options` parameter has been extended to allow > single valued arguments. So you can specify things like: > > package { 'mysql': > ensure => installed, > source => 'N:/packages/mysql-5.5.16-winx64.msi', > install_options => [ '/S', { 'INSTALLDIR' => 'C:\mysql-5.5' } ], > } > > Note the array, which contains a single string followed by a hash > pair. This will become `/S INSTALLDIR='C:\mysql-5.5'` on the command > line. > > I recommend giving the 3.0rc7 release a try[2]. It supports both MSI > and executable installers on Windows, and you can specify > uninstall_options for Windows package resources (in the same format as > install_options). > > Josh > > [1] http://docs.puppetlabs.com/references/2.7.19/type.html#package > [2] > https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/BCyRtDcqeBY > > -- > Josh Cooper > Developer, Puppet Labs > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" 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-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Puppet Users" 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-users?hl=en.
