<div dir="ltr">&gt; I&#39;ve had quite an odyssey to come to my present understanding of the<br>&gt; SqueakMap package loader. The way I now understand it is as follows:<br>&gt;<br>&gt;  SqueakMap packages can be seen in the middle-left list pane of SqueakMap<br>&gt; Package Loader. The context menu in this pane filters which packages to<br>&gt; show. The bottom-left list pane appears to be another selection filter. I<br>&gt; deselect all to avoid surprises.<br><br>Yea that sounds right.  Honestly I really do not like the hierarchical list I would prefer a more Smalltalk-like browser approach with packages in left pane, releases in middle pane, details in bottom pane, etc.<br><div><br></div><div>&gt; Details about the selected package are shown in the right pane.<br>&gt; A selected SqueakMap package can contain releases. Available releases are<br>&gt; listed below the package name in the  SqueakMap Package Loader.  A new<br>&gt; release  can be created though the context menu of a selected package:<br>&gt; &quot;Create new Release&quot;. (There are more alternatives that I haven&#39;t<br>&gt; investigated.)<br>&gt; Details about a selected release are shown in the right pane. One detail<br>&gt; shown for every release is called &quot;Download: &lt;URL&gt;&quot;. The URL identifies a<br>&gt; file that specifies the installation. I have seen an .st file that will be<br>&gt; executed as a doIt, and a .sar file that contains 3 .st files: a preamble,<br>&gt; an installation file, and a postscript.</div><div><br></div><div>A .sar file would also contain whatever /resources/ were needed for that application to run.  Many catalog entries do not need resources, but the ones that do, can use SAR files as a means of one-click deployment.</div><div><br></div><div>Otherwise, a plain .st script can be used to download resources from some location (along with code packages for a correct configuration).</div><div><br></div><div>Normally each correct configuration script is specified for a specific version of Squeak.</div><div><br></div><div>&gt; One command available for a selected release is &quot;Edit release&quot;.  This opens<br></div><div>&gt; a &quot;fill-in-the-form&quot; called a Release browser. Most fields are explained by<br>&gt; hovering the mouse above the field. The exception is the bottom field; it<br>&gt; can contain a script for the installation. I haven&#39;t found a good<br>&gt; explanation for this script anywhere. </div><div><br></div><div>Yes it&#39;s the .st script which performs the installation.  There is a detailed description with example here:</div><div><br></div><div>  <a href="http://wiki.squeak.org/squeak/6182">http://wiki.squeak.org/squeak/6182</a><br></div><div><br></div><div>It explains the two kinds of scripts that should be written for each SqueakMap catalog entry, 1) the fixed-configuration (for specific Squeak version) and 2) the head release (latest code).  It explains the rationale for when you would want just #1, or both #1 + #2.</div><div><br></div><div>&gt; I first thought it wasn&#39;t important<br>&gt; because most releases shown in the package loader leave the script empty.  </div><div><br></div><div>That&#39;s only because most packages on SM are from before the time this ability to &quot;Edit Release&quot; was written in 2012.  At that time, I started trying to encourage people to use SM as a Catalog and not a SCM tool.  IOW, use .st scripts only (unless embedded resources are needed, then a SAR).</div><div><br></div><div>I personally am not going to store any more .mcz&#39;s on SqueakMap.  I only want my .mcz&#39;s in the SCM repository (SqueakSource, SS3, etc.).  The rationale for this is in those wiki pages linked together.</div><div><br></div><div>&gt; I<br>&gt; now see the field as an input field. Fill it with executable Squeak code and<br>&gt; save it. It will then be transformed into file, stored somewhere, and become<br>&gt; retrievable through the URL in the &quot;Download: &lt;URL&gt;&quot;. This scheme seems<br>&gt; extremely powerful but only for the person who knows the various<br>&gt; installation mechanisms.</div><div><br></div><div>That&#39;s true but all catalog entry&#39;s can generally follow the same format of script, so you can clone pretty easily one and get all the great features like dependencies for literally just a few lines of code.  The format of every &quot;fixed-configuration&quot; script is:</div><div><br></div><div><div>    (check if first required dependency is already loaded) ifFalse:</div><div>        [ SMSqueakMap default installPackageNamed: &#39;The Dependent Package&#39; version: &#39;1.1&#39; ].</div></div><div><div><br></div><div>    (check if 2nd required dependency is already loaded) ifFalse:</div><div>        [ SMSqueakMap default installPackageNamed: &#39;The Dependent Package&#39; version: &#39;1.1&#39; ].</div></div><div><br></div><div>    #(&#39;My-Core-Package-cmm.123&#39; &#39;My-Tests-Package-cmm.123&#39;) do:</div><div>        [ : each | (Installer repository: &#39;<a href="http://ss3.gemstone.com/ss/Ma-Client-Server">http://ss3.gemstone.com/ss/Ma-Client-Server</a>&#39;) install: each ]</div><div><br></div><div>The way I check for the presence of required dependencies is simply (Smalltalk hasClassNamed: #SomeClass) where I know SomeClass only exists in that other package.  I know this is not ideal but the good news everyone can do precisely what&#39;s ideal for each project.</div><div><br></div><div>See an example on SM for an example of a proper &quot;head&quot; script.  It&#39;s basically the same except instead of loading specific package versions it uses McmUpdater, the same mechanism we use for trunk, so that each SM project can have community features too.</div><div><br>&gt; Chris pointed me to a script statement for downloading a SqueakSource<br>&gt; package known by its URL. e.g.,<br>&gt;        (Installer repository: &#39;<a href="http://www.squeaksource.com/DCI">http://www.squeaksource.com/DCI</a>&#39;) install:<br>&gt; &#39;BBAllInOne-TRee.18&#39; .<br>&gt; this happens to be an  Monticello configuration file,<br>&gt; BBAllInOne-TRee.18.mcm.</div><div><br></div><div>Installer can install .mcm file fine.</div><div><br>&gt; Another statement I have seen is<br>&gt;          SMSqueakMap default installPackageNamed: &#39;&lt;name&gt;&#39; version:<br>&gt; &#39;&lt;version&gt;&#39;<br>&gt; I couldn&#39;t make it work for me, but suspect that the package shall be stored<br>&gt; as a versioned file in SqueakMap itself.<br><br>That should work as long as &#39;&lt;version&gt;&#39; of &#39;&lt;name&gt;&#39; exists -- it will simply run that file at Download URL for that package and this is how pre-reqs are done.</div><div><br></div><div>I tested it yesterday and it worked, which one is not working fo ryou?<br><br>&gt; This is as far as I&#39;ve got. I hope somebody will correct the explanation<br>&gt; where it is wrong so that other people may make use of it.  I would have<br>&gt; been spared considerable time and frustration if I had seen it a couple of<br>&gt; weeks ago.<br><br>Good that you persevered since you now can easily publish packages that can use any SCM technology with resources, demos, etc.<br><br>Cheers.<br><br>&gt; Cheers<br>&gt; --Trygve<br>&gt;<br>&gt;<br>&gt;<br>&gt; On 15.01.2015 20:52, Chris Muller wrote:<br>&gt;<br>&gt; On Thu, Jan 15, 2015 at 4:02 AM, Bert Freudenberg &lt;<a href="mailto:bert@freudenbergs.de">bert@freudenbergs.de</a>&gt;<br>&gt; wrote:<br>&gt;<br>&gt; On 14.01.2015, at 21:32, Chris Muller &lt;<a href="mailto:ma.chris.m@gmail.com">ma.chris.m@gmail.com</a>&gt; wrote:<br>&gt;<br>&gt; Most SqueakMap packages do not have a script; they<br>&gt; only have a &quot;Download URL&quot;.<br>&gt;<br>&gt; They /all/ have a Download URL.  What varies is what type of file is<br>&gt; found at that url.  When you entered the script above and clicked<br>&gt; &quot;Save&quot; in the Release Editor browser, it saved it as a &quot;.st&quot; file on<br>&gt; the SM server, with the &quot;Download URL&quot; field pointing to it.<br>&gt; SqueakMap will still interpret .mcz, .sar, as well as .st files and<br>&gt; &quot;do the right thing&quot; for each type.<br>&gt;<br>&gt; Curious, does it handle .mcm directly nowadays?<br>&gt;<br>&gt; It appears not but could be done by adding new subclass of<br>&gt; SMSimpleInstaller.<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt;<br>&gt; The essence of object orientation is that<br>&gt; objects collaborate  to achieve a goal.<br>&gt; The class hierarchy is in the nature of a comment;<br>&gt; it has no run time significance.<br>&gt; ---<br>&gt; Trygve Reenskaug      mailto: <a href="mailto:trygver@ifi.uio.no">trygver@ifi.uio.no</a><br>&gt; Morgedalsvn. 5A       <a href="http://folk.uio.no/trygver/">http://folk.uio.no/trygver/</a><br>&gt; N-0378 Oslo             <a href="http://fullOO.info">http://fullOO.info</a><br>&gt; Norway                     Tel: (+47) 22 49 57 27<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br><br></div></div>