For Windows versions of Continuity, we use third-party software to build the Continuity installer. We switched to a new release build software a few years back due to the cost of getting a new license for InstallShield. We are now using Advanced Installer (version 12 as of this writing) to build our releases. The overall process is essentially the same for both installers, so I have kept the InstallShield wiki page for reference, or should we ever go back to it. However, all necessary information to release Continuity with Advanced Installer will be contained here.

Setting up the Installer

  • Once Advanced Installer is installed, you need to define the project files, environmental variables, prerequisites, where it gets installed, etc. I have attached an Advanced Installer project file, so all you need to do is open it and everything should be already set for you. However, it is likely that the project files will not, since they need to be found in the same place on the computer doing the release build. The picture below shows a partial listing of the files needed for the build and it can be seen that they are all tied to a specific path on the computer (i.e., the files are not stored in the project file).

    Continuity_64bit.aip

  • That said, I'll still describe what you need to define inside the project file.
    • We still have 2 prerequisites that are needed when installing on Windows: Python 2.7 and PyWin32. These are specified in the prerequisites portion in Advanced Installer and the actual files are located on our own server at http://cmrg.ucsd.edu/wiki/widget/data/. Hence, if our server ever goes down or changes in structure, the prerequisites will not be able to installed.

    • There are two environmental variables that we need to define for Windows Continuity which are included in Advanced Installer: CONTINUITYPATH, CONTPYTHON. CONTINUITYPATH points to where Continuity is installed, and CONTPYTHON points to the version of Python that Continuity uses. There can be multiple versions of Python on the same system, Continuity will simply use the one that CONTPYTHON points to.
    • Lastly, you just need to define where Continuity will be installed by default. I no longer install in the Program Files directory as the permissions on that folder are too strict. So the default location is now C:\Continuity.
  • Once the installer is set up, then it is time to get ready to build a release

Preparing for a Release

  • If there have been any changes in the <continuity>/src directories, be sure that the appropriate files have been updated in pcty/sourceTools/src as THESE are the files that get included in the release

  • If there have been any changes in pcty.client.forms.updateServerBinaries, be sure to check to see if that impacts the SetUpRelease script as it uses that file.

  • Run test cases preferably on every platform.
  • Figure out what your release number is (just do an svn update and it should tell you).
    • I usually add 1 to this number to account for the changes we'll make in README.txt and cont_rel_6_3a.html as shall shortly be described.
  • Edit the file <continuity>/pcty/documentation/release notes/cont_rel_6_3a.html.

    • Add your new log of changes to the top (svn log provides a good place to start).
    • Update release number and date.
  • Update <continuity>/pcty/README.txt with a new date and release number.

  • Be sure to commit all changes made to the release notes to svn.
  • Checkout Continuity from svn on your Desktop and call it cont_release -- this needs to be done at every release

  • Create a directory called AllMglTools also on your desktop. It needs the following subfolders, extracted from compressed MglTools files found in 64winlib, 64linuxlib, 64darwinlib, etc from cont_release: Make sure that these are extracted from cont_release and not older versions!

    • MglToolsLibLinux64

    • MglToolsLibWinx64

    • MglToolsLibMacx64

  • Setup appropriate paths in <continuity>/installerTools/SetUpRelease.py (all the hard coded paths should be in the first few lines)

Actually doing a build

  • Run <continuity>/installerTools/SetUpRelease.py

  • Define which platforms you want to make a release for. I have stopped building a 32bit Windows installer, but still do Windows, Mac and Linux all 64bit.
  • At some point it will need to communicate with a Mac computer to build the Mac installer. You'll need to point it at a Mac ip address and you can do that in the window that SetUpRelease.py opens.

  • That Mac will have need to have a current version of Continuity source code installed. See the !makeMacInstaller method inside SetUpRelease for where it puts the Mac code for building the installer. Change that location as needed to suite your system.

  • Once SetUpRelease finishes, you'll have installers that are ready to be tested to make sure that everything is working. Ideally, you would test on all platforms before releasing.

  • If you are happy with the installers, you can manually copy over the installers and release notes to the web server or simply rerun SetUpRelease and only check the 'Do Public Release' button to copy over all the installers and release notes.

  • Alternatively, you can simple scp them onto the server yourself. See SetUpRelease.py for details on where they go.

Known Issues

  • The process of creating the installers is lengthy, expect about 20 minutes or so for it to complete.
  • When running SetUpRelease, there has been some randomness in it working or not. There are 2 errors that arise quite often; however, the "solution" is to simply rerun SetUpRelease and things will work. I haven't really looked into these issues, but since just rerunning SetUpRelease works, it isn't that big of deal.

  • Error 1: The Continuity directory is not empty. -- Just rerun and it'll get past this.
  • Error 2: A permissions error trying to create a directory. -- Just rerun and it'll get past this.