<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <h2>Changes 1.2.3 -> 1.3.4-rc2</h2>
    <h1> </h1>
    <h3><b>Setuphelpers :</b></h3>
    <b> </b>Additional functions :<br>
    <ul>
      <li>local_drives : return list of local drives, with capacity and
        available space  </li>
      <li> all_files : list all files of a directory, including files of
        subdirectories (but not the directories themselves)</li>
      <li> create_onetime_task : create a task in windows scheduler
        which is run only one time (so is deleted after scheduled time)</li>
      <li> installed_windows_updates : return list of installed updates,
        indepently from WUA agent</li>
      <li> <a
href="http://dev.tranquil.it/sphinxdocs/source/setuphelpers.html#setuphelpers.install_exe_if_needed">install_exe_if_needed</a>
        : install conditionally an exe setup, checking minimum version,
        uninstall key and force flag (<br>
      </li>
      <li> <a
href="http://dev.tranquil.it/sphinxdocs/source/setuphelpers.html#setuphelpers.install_msi_if_needed">install_msi_if_needed</a>
        : install conditionally an msi, detect uninstall key and add it
        to uninstallkey list of package</li>
      <li> ensure_list : given a list or a string, always return a list,
        or None if allowed. String is considered as a csv list. </li>
      <li> registry_deletekey : Delete the key under specified registry
        path and all its values</li>
      <li> uninstall_key_exists : Return True if supplied uninstall key
        exists eithe rin win32 or win64 part of uninstall registry.</li>
      <li> reg_enum_subkeys : list the sub keys (= sub directories) of
        an opened key</li>
      <li> reg_enum_values : list the value names associated with a
        registry key (opened with reg_openkey_noredir for example)</li>
      <li> win_startup_info : return list of commands launched at
        windows startup in run registry key and common startup folder.</li>
    </ul>
    Changes :<br>
    <ul>
      <li> ensure_unicode : failover with replace for all types of data</li>
      <li> wgets and wget : can optionnaly verify certificates. and use
        wapt user agent http headers, with no-cache pragma. raise
        exception earlier</li>
    </ul>
    <h3><b>Core</b></h3>
    <ul>
      <li>FIX: incorrect  uninstallkey if nested call WAPT.install
        inside surrounding setup.install. <a
          class="moz-txt-link-freetext"
          href="https://roundup.tranquil.it/wapt/issue605"><a class="moz-txt-link-freetext" href="https://roundup.tranquil.it/wapt/issue605">https://roundup.tranquil.it/wapt/issue605</a></a><br>
      </li>
      <li>better tolerance to encoding issues.<br>
      </li>
      <li>fix waptserver discovery with SRV dns record </li>
      <li>add optional dnsdomain in wapt-get.ini. <br>
      </li>
      <li>add optional verify_cert option (default to False) for
        waptserver access in wapt-get.ini</li>
      <li>forget old host package if computer FQDN is changed</li>
      <li>fix : check that there are no additional files in package
        content not checksummed in manifest.sha1 when unzipping</li>
      <li>check systematically that declared uninstallkeys are found in
        registry after package install</li>
      <li>allow session_setup to return a value different than None or
        zero to indicate a RETRY at next session logon</li>
      <li>optionally includes packages with status ERROR for
        Wapt.is_installed(), WaptDB.installed_search,
        WaptDB.installed_matching. CBB : installed_search included
        errors by default in previous behaviour.</li>
    </ul>
    <h3><b>Waptconsole</b></h3>
    <ul>
      <li>optionally filter newest only package (latest version) in
        waptconsole private repository or when importing from external</li>
      <li> optionally filter newer than local packages in waptconsole
        when importing from external</li>
      <li> display size of packages in repository grids</li>
      <li> reorganize settings dialog to focus on most important
        parameters</li>
      <li> allow several hosts and packages to be selected when cherry
        picking install, remove or forget packages in waptconsole
        inventory (cbb, user interface should be improved)</li>
      <li> add wakeonlan feature for hosts running on same network as
        main waptserver</li>
      <li> check md5 when downloading packages with waptconsole to avoid
        keeping incomplete or corrupted cached files</li>
      <li> fix redirect from http to https not working in waptconsole</li>
      <li> fix waptserver discovery with SRV dns record not working
        properly in waptconsole</li>
    </ul>
    <br>
    <h3><b>Waptservice</b></h3>
    <ul>
      <li>recheck waptserver authorized IP in waptservice if call failed
        with restricted access (so that next call succeeds)</li>
      <li>use create_onetime_task windows scheduler instead of AT
        command to trigger a waptservice restart</li>
      <li> better handling when computer often disconnect (sleep) or
        change from one network to another network</li>
    </ul>
    <br>
    <h3><b>Waptupgrade</b></h3>
    <ul>
      <li>authenticate systematically the waptagent.exe file with a
        sha256 hash inside waptupgrade package or when using waptdeploy
        downloader (requires change in the GPO if gpo is used to deploy
        wapt automatically)</li>
      <li>include waptagent.exe in waptupgrade package per default and
        trigger a full waptagent.exe install (through a windows
        scheduled task which uses waptdeploy) if upgrading from wapt
        < 1.3.0.</li>
      <li>waptdeploy requires now --hash= option. --wait enable
        waptdeploy to wait for pending waptservice tasks to terminate
        before upgrading wapt.<br>
      </li>
    </ul>
    <h3><b>Wapt-get</b></h3>
    <ul>
      <li> handles waptservice local authentication for wapt-get to
        allow install / remove as a non admin user.</li>
      <li> add option to wapt-get --service  to force use of http
        webservice. default --direct for user members of computer
        administrators group</li>
      <li> can pass waptserver user and password to wapt-get command
        line for automate package uploading tasks</li>
      <li> guess package rootdir based on path of control in addition to
        setup.py files for development wapt-get tasks like install,
        remove, build-upload etc..</li>
      <li> Fix command line parameters handling in wapt-get.exe</li>
    </ul>
    <br>
    <h3><b>Waptserver</b></h3>
    RPM package for waptserver on centos <br>
    use huey task pool in waptserver instead of uwsgi for portability <br>
    Fix waptserverpostconf not able to restart local waptservice
    properly<br>
    <br>
    <h3><b>Global</b></h3>
    python upgraded to 2.7.10<br>
    many libraries upgraded (openssl, m2crypto, flask, psutils, etc...)<br>
    <h2>Upgrade from 1.2.3<br>
    </h2>
    <b>Linux server upgrade</b><br>
    With a server on Linux : <br>
    ssh on waptserver<br>
    <tt>cd</tt><tt><br>
    </tt><tt>wget <a class="moz-txt-link-freetext"
href="http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptrepo-1.3.4.deb">http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptrepo-1.3.4.deb</a></tt><tt><br>
    </tt><tt>wget <a class="moz-txt-link-freetext"
href="http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptserver-1.3.4.deb">http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptserver-1.3.4.deb</a></tt><tt><br>
    </tt><tt>wget <a class="moz-txt-link-freetext"
href="http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptsetup-1.3.4.deb">http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/tis-waptsetup-1.3.4.deb</a></tt><tt><br>
    </tt><tt>dpkg -i </tt><tt>tis-wapt*.deb</tt><tt><br>
    </tt><tt>apt-get -f install</tt><tt><br>
    </tt><tt>wapt-serverpostconf</tt><tt><br>
    </tt>-> default answer to all questions. <br>
    <h3>Windows server upgrade</h3>
    Download <a class="moz-txt-link-freetext"
href="http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/waptserversetup.exe">http://wapt.tranquil.it/wapt/nightly/1.3.4-rc2/waptserversetup.exe</a><br>
    Install with admin rights.<br>
    Launch server postconfiguration (obviously, don't recreate a new new
    private key...)<br>
    Don't create waptagent from waptserverpostconf but use waptconsole
    option which provide waptagent and waptupgrade package.
    waptserverpostconf creates only the waptagent.<br>
    <h3>Wapt management host upgrade</h3>
    on the wapt manage workstation (where the private key is defined)<br>
    download <a class="moz-txt-link-freetext"
      href="http://wapt/wapt/waptsetup-tis.exe">http://wapt/wapt/waptsetup-tis.exe</a>
    from waptserver<br>
    install with default options<br>
    <h4> Build clients upgrade package</h4>
    <b> </b>launch c:\wapt\waptconsole <br>
    tools/Build waptagent<br>
     -> build the waptagent.exe and xxx-waptupgrade.wapt package and
    uplaod them to wapt server.<br>
    <br>
    include the built xxx-waptupgrade package in your base group package
    or as a dependency of all host packages<br>
    trigger upgrade on hosts<br>
    <h4> <b>GPO update</b></h4>
    <b> </b>copy waptdeploy.exe to the gp<br>
    modify your waptdeploy GPO to include --hash= with the hash defined
    in c:\wapt\waptupgrade\waptagent.sha256 and a --wait=15 for example.<br>
    \\srvads\netlogon\waptdeploy.exe
    --hash=5b5988012033e534b5352050bff7dece4840456225787b39dc1d00dfb9e75cd8<br>
    (you can get this on linux too with the command "<tt>sha256sum
      /var/www/wapt/waptagent.exe</tt>" )<br>
    <h3>Pyscripter development / debug<br>
    </h3>
    The tis-python27 package no longer includes all the libraries of
    Wapt.<br>
    So you need to add a site-package dir to python init of Pyscripter
    to be able to debug using Pyscripter.<br>
    (see<a
href="http://dev.tranquil.it/wiki/WAPT_-_Mise_en_place_de_l%27environnement_de_d%C3%A9veloppement">
<a class="moz-txt-link-freetext" href="http://dev.tranquil.it/wiki/WAPT_-_Mise_en_place_de_l%27environnement_de_d%C3%A9veloppement">http://dev.tranquil.it/wiki/WAPT_-_Mise_en_place_de_l%27environnement_de_d%C3%A9veloppement</a></a>)<br>
    <p style="box-sizing: border-box; margin: 0px 0px 10px; color:
      rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial,
      sans-serif; font-size: 14px; font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      20px; orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;
      background-color: rgb(255, 255, 255);">In PyScripter, Option Tools
      / Edit startup scripts, update file<span
        class="Apple-converted-space">  </span><b style="box-sizing:
        border-box; font-weight: bold;">python_init.py</b> with lines :<br>
    </p>
    <pre style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; display: block; padding: 9.5px; margin: 0px 0px 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); border-radius: 4px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(245, 245, 245);">import site
site.addsitedir('c:/wapt/lib/site-packages')
</pre>
    <br class="Apple-interchange-newline">
    <br>
    <br>
    <br>
  </body>
</html>