Hi all, I did spend more time on the modifications and enhanced some of the concepts introduced in WPKG 1.1.3-RC7 further. Changes included: NEW: Extended host attribute match now allows to match architecture using architecture="<arc>" attribute. The following architectures are currently supported: x86 32-bit operating system x64 64-bit operating system Note: You will have to match x86 also if you run Windows 32-bit on AMD64/EMT64/x64 hardware. NEW: Extended host attribute match allows to match environment variables using environment="variable1=^regexp$|variable2=regexp..." attribute. Please note that regular expressions are matched case-insensitive and multiple variables have to be separated by the pipe ('|') character. Please also note that in case you use WPKG-client the system-user environment might differ from the environment you see when opening a command prompt and typing 'set'. Some variables might be missing and others might have different content. So use with caution. NEW: Extended use of host matches. Now WPKG supports host matches from previous update not only in <host /> definitions but also in <package /> definitions used within <profile /> nodes. This allows profiles where certain packages are applied only if specific host-conditions match. For example: <profile id='default'> <package package-id='AdobeReader' os="windows 7" architecture="x64" /> <package package-id='audacity' /> <package package-id='pidgin' os="windows 7" /> <package package-id='firefox' environment="NUMBER_OF_PROCESSORS=^4$" /> </profile> This example would install "AdobeReader" only on systems with Windows 7 64-bit edition running while "pidgin" is installed on all Windows 7 hosts regardless of the architecture. The "firefox" package would be installed only if WPKG runs within an environment which defines the NUMBER_OF_PROCESSORS environment variable to the value "4". The "audacity" packages would be installed on any host which gets the 'default' profile assigned. You can download the full package at: <http://wpkg.org/files/beta/WPKG-1.1.3-RC8.zip> Of course you can also just get the latest wpkg.js from SVN: <http://wpkg.svn.sourceforge.net/viewvc/wpkg/wpkg/stable/1.1/> The documentation, change notes and XSD files have been updated to match new possibilities in hosts.xml and profiles.xml. Any feedback is appreciated. Change notes ============ WPKG Version: 1.1.3-RC8 Author: : Rainer Meier <skybeam (at) users.sourceforge.net> Date : 2011-06-19 Status : release pending Changes/fixes visible to the user: Summary: - Fixed IP-address match in case 3 "." are used in host matching string. - Fixed package removal procedure exception in case of /noremove flag is used. - Fixed removal of settings entry in case of /noremove and no package checks. - Allow folders to be checked with file checks. - Allows recursive search for uninstall entries in registry - Enhance wrapper.js to use sysnative cmd.exe. - Disabled recursive registry uninstall checking again due to slow execution. - Closing STDIN when executing commands. - Extended host matching for OS, IP, domain and groups. - Fix for crash if interface has no IP bound to it. - Fix for registry exist checks not returning true. - Fix for execute test writes null values to the logs. - Fix included estetic break. - Extended host attribute match for host architecture. - Extended host attribute match for environment variables. - Support for host attribute matches in <package/> definitions within profiles. - Small fixes and optimizations. NEW: Updated IP matching algorithm to prevent accidental matching if regexp or host name is used which uses exactly 3 "." within the string. Thanks to Stefan Pendl for reporting. FIX: Fixed package removal procedure in case /noremove flag is set. WPKG would have failed (exception thrown) in case /notemove was used and a package is detected NOT to be installed. FIX: In case /noremove is used and the package does not define any checks WPKG is unable to detect if the package is still installed or not. Previously WPKG was assuming that the package is not installed and removed it from the local settings file. This has been changed. The package will now only be removed from the settings file if it defines some checks which allow WPKG to clearly detect that the package is not installed on the system. So if the package does not define any checks WPKG assumes it's still installed on the systme and does not remove its entry from the local settings file (wpkg.xml). FIX: Updated "file" type checks to match folders too. Now a check of type file for condition exist yields true for a patch referring either a file or a folder. Thanks to Joe for reporting. NEW: WPKG now allows uninstall entries to be defined in sub-nodes of the uninstall registry key. I was unable to verify that Windows supports such entries but as reported RationalPlan Viewer seems to add such a sub-node: Uninstall\RationalPlan\Viewer. There might be other programs doing the same. During tests Windows XP and Windows 7 were ignoring such entries but now WPKG supports these entries now. (NOTE: Disabled again, read below) NEW: Enhanced wrapper.js to use sysnative directory. The sysnative directory allows 32-bit programs to access the 64-bit binaries within %SystemRoot%\system32\. This way it is not necessary any more to copy the 64-bit version of cmd.exe to the 64-bit\ sub-folder since the wrapper can launch the locally available 64-bit cmd.exe. MOD: Disabled recursive uninstall checks again. Reading registry keys recursively is very slow with WSH and since there are typically many sub-keys within the uninstall locations this causes a very long delay each time an uninstall check is used. It's recommended to use a registry value check instead of an uninstall check in order to check for the status of an application which puts its uninstall entry within a sub-key of the uninstall keys in the registry. MOD: WPKG now closes STDIN when executing external commands. Some applications seem to wait for STDIN to be closed before they exit. Microsoft PowerShell seems to be one of the affected applications. Since closing STDIN should not have negative effects (WPKG will not write to STDIN) it's supposed to be safe to close it. Thanks to Stéphane Bilqué for reporting. NEW: Many extensions in host matching. Now a host entry in hosts.xml is allowed to include the following attributes: <host name='host-x' profile-id='profile-reference' os="windows 7" ipaddresses="^192\.168\.1\..*" domainname="^domain$" groups="^group.*$" /> Note: All special parameters (os, ipaddresses, domainname, groups) are specified as regular expressions. Especially keep this in mind when specifying IP-addresses or any parameter including periods (.). As a period in regular expression means "any character". So keep in mind to escape special regular expression characters. Many thanks to Daniel Dehennin for continued support of this changes. It just almost took as long as finishing DNF to include it. *sigh* FIX: Included fix for bug 196 which could make WPKG crash in case no IP address is assigned to a network card. Thanks to Daniel Dehennin again. FIX: Included fix for bug 199 where registry exist checks did not return true. Thanks to Daniel Dehennin again. FIX: Included fix for bug 200 where execute test fallback to 'exitcodeequalto' in 'execute' tests writes null values to the logs. Thanks to Daniel Dehennin again. FIX: Included esthetic break statement in check condition for uninstall checks. Thanks to Daniel Dehennin again. NEW: Extended host attribute match now allows to match architecture using architecture="<arc>" attribute. The following architectures are currently supported: x86 32-bit operating system x64 64-bit operating system Note: You will have to match x86 also if you run Windows 32-bit on AMD64/EMT64/x64 hardware. NEW: Extended host attribute match allows to match environment variables using environment="variable1=^regexp$|variable2=regexp..." attribute. Please note that regular expressions are matched case-insensitive and multiple variables have to be separated by the pipe ('|') character. Please also note that in case you use WPKG-client the system-user environment might differ from the environment you see when opening a command prompt and typing 'set'. Some variables might be missing and others might have different content. So use with caution. NEW: Extended use of host matches. Now WPKG supports host matches from previous update not only in <host /> definitions but also in <package /> definitions used within <profile /> nodes. This allows profiles where certain packages are applied only if specific host-conditions match. For example: <profile id='default'> <package package-id='AdobeReader' os="windows 7" architecture="x64" /> <package package-id='audacity' /> <package package-id='pidgin' os="windows 7" /> <package package-id='firefox' environment="NUMBER_OF_PROCESSORS=^4$" /> </profile> This example would install "AdobeReader" only on systems with Windows 7 64-bit edition running while "pidgin" is installed on all Windows 7 hosts regardless of the architecture. The "firefox" package would be installed only if WPKG runs within an environment which defines the NUMBER_OF_PROCESSORS environment variable to the value "4". The "audacity" packages would be installed on any host which gets the 'default' profile assigned. MOD: Some smaller fixes and optimizations. br, Rainer |