Matt,
I tried your class in my test environment. Here are my findings:
Using Microsoft's Process Monitor<
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx>,
we capture Puppet's call to MSIEXE, the "command line" value reads:
msiexec.exe /qn /no restart /i
\\\\example.com\\temp\\python-2.7.3.amd64.msi INSTALLDIR=C:\python27
ALLUSERS=1
It makes sense that you are getting an error because msiexec cannot find
"\\\\example.com\\temp\\python-2.7.3.amd64.msi".
In order to successfully install, change the "source" line single quotes
(') to double quotes("). On next Puupet run, Process Monitor "command
line" value reads:
msiexec.exe /qn /no restart /i \\example.com\temp\python-2.7.3.amd64.msi
INSTALLDIR=C:\python27 ALLUSERS=1
*Another note:
*Using Microsoft's orca.exe<
http://msdn.microsoft.com/en-us/library/windows/desktop/aa370557%28v=vs.85%29.aspx>,
the "python-2.7.3.amd64.msi" doesn't contain properties for INSTALLDIR or
ALLUSERS. These aren't msiexec default properties either. As a result,
these parameters are being ignored by msiexec. You wouldn't notice this
because the values you happen provided for these errant keys are the
defaults. If you comment the " install_options" line, it will still
install in C:\Python27 for all users.
If you wanted to specify a custom install directory, you would need to use
TARGETDIR.
If you wanted to restrict user access, you would need to use WHICHUSERS.
WHICHUSERS accepts "ALL" or "JUSTME"
To install for the current user in specified directory "C:\python273"
install_options => [ { 'TARGETDIR' => 'C:\python273' }, { 'WHICHUSERS' =>
'JUSTME' } ],
Here is your stanza fixed (with the install_options line optional [since
you are using the defaults]):
class python::install {
package { 'python':
ensure => installed,
provider => 'msi',
source => "\\\\example.com
\\software\\python\\python-2.7.3.amd64.msi",
#install_options => [ { 'TARGETDIR' => 'C:\python27' }, {
'WHICHUSER => 'ALL' } ],
}
}
I hope this helps.
-Kev