Variables

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search

Contents

[edit] Variables

[edit] Where can they be set

[edit] In which order are they applied

[edit] WPKG 1.2.x and below

The level below another will overwrite the previous definition.

  1. operating system
  2. WPKG client
  3. package
  4. profile
  5. host

For example, if a variable is defined at the package and the profile level, the definition of the profile will be used.

<profile id="TestPC">
    <variable name="PKG_VER" value="1.2.3"/>
 
    <package package-id="WpkgSettings"/>
</profile>
<package
    id="WpkgSettings"
    name="WPKG Client Settings"
    revision="%PKG_VER%"
    priority="999"
    reboot="false"
    execute="once">
 
    <variable name="PKG_VER" value="1.2.0"/>
</package>

[edit] WPKG 1.3.x and above

The level below another will overwrite the previous definition.

  1. operating system
  2. WPKG client
  3. host
  4. profile
  5. package

For example, if a variable is defined at the package and the profile level, the definition of the package will be used.

<profile id="TestPC">
    <variable name="PKG_VER" value="1.2.3"/>
 
    <package package-id="WpkgSettings"/>
</profile>
<package
    id="WpkgSettings"
    name="WPKG Client Settings"
    revision="%PKG_VER%"
    priority="999"
    reboot="false"
    execute="once">
 
    <variable name="PKG_VER" value="1.2.0"/>
</package>

To get the behavior of WPKG 1.2.x with WPKG 1.3.x, you need to check if the variable is set and only apply the current change if the variable is not set.

<profile id="TestPC">
    <variable name="PKG_VER" value="1.2.3"/>
 
    <package package-id="WpkgSettings"/>
</profile>
<package
    id="WpkgSettings"
    name="WPKG Client Settings"
    revision="%PKG_VER%"
    priority="999"
    reboot="false"
    execute="once">
 
    <variable name="PKG_VER" value="1.2.0">
        <condition>
            <check type="host" condition="environment" value="PKG_VER=^$"
        </condition>
    </variable>
</package>

[edit] Why use variables


[edit] Replacing multiple occurrences

<package id="WpkgClient"
        name="WPKG Client"
        revision="%PKG_VER%"
        reboot="false"
        priority="999">
 
    <variable name="PKG_VER"     value="1.3.14" />
    <variable name="PKG_EXE_VER" value="1.0.0.22" />
    <variable name="PKG_SOURCE"  value="%SOFTWARE%\WPKG\WPKG Client\WPKG Client %PKG_VER%-%PROCESSOR_ARCHITECTURE%.msi" />
 
    <check type="uninstall" condition="versiongreaterorequal" path="WPKG"  value="%PKG_VER%"/>
    <check type="file" condition="versiongreaterorequal" path="%ProgramFiles%\wpkg\wpkginst.exe" value="%PKG_EXE_VER%" />
 
    <!-- replace x32 with x86 and x64 with AMD64 in the installer file name -->
    <install cmd='msiexec /norestart /passive /log "%TMP%\WpkgClient.log" /i "%PKG_SOURCE%" ALLUSERS=1 SETTINGSFILE="%WPKG_ROOT%\settings.xml"' >
        <exit code="1641" />
        <exit code="3010" reboot="false"/>
    </install>
 
    <upgrade cmd='msiexec /norestart /passive /log "%TMP%\WpkgClient.log" /i "%PKG_SOURCE%" ALLUSERS=1 SETTINGSFILE="%WPKG_ROOT%\settings.xml"' >
        <exit code="1641" />
        <exit code="3010" reboot="false"/>
    </upgrade>
 
    <remove cmd='MsiExec.exe /norestart /passive /log "%TMP%\WpkgClient.log" /x "%PKG_SOURCE%"' />
</package>

[edit] Applying different versions

Below find the host definition for two computers, where the host definition for TestPC is overwriting some variables.

<host name="TestPC" profile-id="DesktopPC" >
    <variable name="PKG_VER" value="1.3.14" />
</host>
 
<host name="OfficePC" profile-id="DesktopPC" />

Both computers use the same profile.

<profile id="DesktopPC">
    <package package-id="WpkgClient"/>
</profile>

Both computers use the same package.

<package id="WpkgClient"
        name="WPKG Client"
        revision="%PKG_VER%"
        reboot="false"
        priority="999">
 
    <variable name="PKG_VER" value="1.3.9" />
    <variable name="PKG_SOURCE"  value="%SOFTWARE%\WPKG\WPKG Client\WPKG Client %PKG_VER%-%PROCESSOR_ARCHITECTURE%.msi" />
 
    <check type="uninstall" condition="versiongreaterorequal" path="WPKG"  value="%PKG_VER%"/>
 
    <!-- replace x32 with x86 and x64 with AMD64 in the installer file name -->
    <install cmd='msiexec /norestart /passive /log "%TMP%\WpkgClient.log" /i "%PKG_SOURCE%" ALLUSERS=1 SETTINGSFILE="%WPKG_ROOT%\settings.xml"' >
        <exit code="1641" />
        <exit code="3010" reboot="false"/>
    </install>
 
    <upgrade cmd='msiexec /norestart /passive /log "%TMP%\WpkgClient.log" /i "%PKG_SOURCE%" ALLUSERS=1 SETTINGSFILE="%WPKG_ROOT%\settings.xml"' >
        <exit code="1641" />
        <exit code="3010" reboot="false"/>
    </upgrade>
 
    <remove cmd='MsiExec.exe /norestart /passive /log "%TMP%\WpkgClient.log" /x "%PKG_SOURCE%"' />
</package>

In the end the computer OfficePC gets revision 1.3.9 of the package installed, where TestPC gets revision 1.3.14 installed.

Retrieved from "http://wpkg.org/Variables"
Personal tools
Namespaces
Variants
Actions
Navigation
ideas?
Toolbox