Hi, I was asked on #slack by user embee (Martin Baehr) how he can create an up to date setup with "PharoLauncher" configuration locally that he can afterwards easily distribute ("unzip and go") to 40 Windows PCs for a training/presentation.
He was preparing Pharo for Singapore FOSSASIA conference workshop at the science center computer lab. I helped him with the following short guide that may be useful to others too. Have fun T. ------------------------------------------------------------------------------------------------------------------------------------------------- A. Portable version of Launcher vor Windows =========================================== 1. Go to https://ci.inria.fr/pharo/view/Launcher/job/Launcher/ and click on "VERSION=stable" for a green build 2. Download "Pharo-win.zip" (Direct link is https://ci.inria.fr/pharo/view/Launcher/job/Launcher/PHARO=40,VERSION=stable,VM=vm,label=linux/lastSuccessfulBuild/artifact/Pharo-win.zip) 3. Extract this to c:\ so you end up with a directory "c:\Pharo" B. Create some folders ====================== 4. Create a new folder "images" 5. Create a new folder "vm" with two subfolders "spur" and "nonspur" So you end up with - Pharo !- images !- vm !- spur !- nonspur C. Install stable "non-Spur" VM =============================== The existing stable VM (before the introduction of Spur) is required for all "PreSpur" images with image version <= 50496 (so latest Pharo 4 and initial images when Pharo 5 was started before switching to Spur during Pharo 5 development) 6. Visit http://files.pharo.org/vm/pharo/win/ and download "Pharo-VM-win-stable.zip" 7. This is the Pharo 4 stable Cog VM. Extract the contents to "C:\Pharo\vm\nonspur" 8. Copy the source files C:\Pharo\PharoV10.sources also to C:\Pharo\vm\nonspur C:\Pharo\PharoV20.sources also to C:\Pharo\vm\nonspur C:\Pharo\PharoV30.sources also to C:\Pharo\vm\nonspur C:\Pharo\PharoV40.sources also to C:\Pharo\vm\nonspur D. Install latest Spur VM ========================= The new, fast and shiny Spur VM is required for all "Spur" images with image version 50497 onwards (so latest Pharo 5) 9. Visit http://files.pharo.org/vm/pharo-spur32/win/ and download "PharoVM-Spur32-win-latest.zip" 10. This is the "bleeding edge" Spur VM. Extract the contents to "C:\Pharo\vm\spur" 11. Copy only the source file C:\Pharo\PharoV40.sources also to C:\Pharo\vm\spur E. Configure Pharo Launcher =========================== 11. Start C:\Pharo\Pharo.exe by double clicking on it, this will open the Pharo Launcher window 12. At the bottom right corner of the Window there is a button called "Open Settings". This opens the settings browser for Pharo Launcher. Click on the node "PharoLauncher" in the settings tree. 13. For the setting "Spur VM Full Path" enter ".\vm\spur\Pharo.exe" and hit ENTER 14. For the setting "VM Full Path" enter ".\vm\nonspur\Pharo.exe" and hit ENTER F. Hack the "images" folder location to be relative =================================================== 15. When you try to change "Location of your images" to be relative like ".\images" you will notice that it always changes back to an absolute path "C:\Pharo\images". So we need to hack this: 16. Hit "SHIFT" + "ENTER" to open the Pharo Spotter. Enter "PhLDirectoryBasedImageRepository" to open a browser on this class. and change the class method #location to look like that location ^ FileSystem workingDirectory / 'images' 17. Close the class browser, close the settings browser and leave the Pharo Launcher by clicking on "Quit" in the bottom right corner. Note that the launcher image is saved on exit - so our code change will be in effect when we start Launcher again. Now ZIP the c:\Pharo folder and you can extract it on any computer that you like. So when you distribute the ZIP the image folder should be clean. But you can also download and include preconfigured images that you like your audience to be working with. G. Sharing caches ================= With the above setup each time you download and start an image using the Launcher a new "package-cache" for Monticello/Metacello downloads will be created for each image directory. To avoid such a cache per image and use a general cache for all images it is helpful to change the package-cache location in each image. This can easily be done: 18. Start an image and evaluate StartupPreferencesLoader preferencesGeneralFolder to find out which preferences folder usually is used. In my example this is C:\Users\root\AppData\Roaming\pharo 19. Go to this folder and create a file called "startup.st" with the following contents: |mczCache| mczCache := 'C:\Software\Pharo\cache' asFileReference. MCCacheRepository cacheDirectory: mczCache. UIManager inform: 'Package cache set to', mczCache fullName If you solely work with the setup and following our path logic you can even give this as a relative path in the startup script: mczCache := FileSystem workingDirectory parent parent / 'package-cache' Details on further startup customization can be found on https://marianopeck.wordpress.com/2012/05/12/startuploader-running-startup-scripts-in-pharo/