[Newbies] sandboxing a world

Herbert König herbertkoenig at gmx.net
Mon Oct 14 20:25:22 UTC 2013


Hi David,

yes that's definitely possible. Back in 2006 and 2007 I did it 
frequently for software used in the production of electronics. Meant for 
users with no computer knowledge assumed. Those programs refused to be 
resized in that they snapped back to their original size by changing the 
World 's extent in the step method of the app. You may want to read the 
World's extent to re-layout after resizing and only refuse to shrink 
below a minimal size.

This was long ago and I assume it is not how you would do it today but 
the process will be similar.

As a user of Windows I had a batch file with the following line:
Squeak_newVM.exe lockdown.image start.st

This starts the VM with a certain image and a Smalltalk script. So I 
just copied my image and changes into that folder under a fixed name and 
edited the class name in the script. Don't remember why I used a custom 
VM there, but it was a minimal change I did. Maybe use the VM to fix the 
window size.

The script read:
     "set up autostart"
     Smalltalk addToStartUpList: PrüfRepDatenApplication .  "The class 
of my Application"
     "remove the Flaps. For a recent Squeak you also might want to 
remove the menu bar at the top. Search Preferences for 'docking'"
     Flaps globalFlapTabsIfAny do:    [:aFlapTab | Flaps removeFlapTab: 
aFlapTab keepInList: false]. "usually not enabled in modern Squeak"
     GZipReadStream fileIn: 'SqueakLockdown-nk.1.cs.gz' asFileName. 
"this is the changeset which does the lockdown"
     Preferences disableProgrammerFacilities.    SmalltalkImage current 
snapshot: true andQuit: true. "This must be on one line"

If you can't locate the the changeset, drop me an email, I will send it 
to you so you can examine it.

In those days (and I assume still today) your class needed two class 
side methods in category system startup:

startUp
     implemented as self startUp: nil
and strartUp: anIgnoredObject
     which did the initialization like self new buildGUI

Please refer to the other pointers for more up to date information. I 
just want to give you an example illustrating the process. Especially 
the program "Plopp" mentioned there was distributed on CD and was meant 
for kids. I bought a copy so I know it was like any old windows program.

Cheers

Herbert


Am 13.10.2013 23:12, schrieb David Holiday:
> Hi Herbert,
>
> Thanks for getting back to me so quickly. As I understand you, it's
> possible to create an application that prevents the user from seeing
> anything but the application controls and widgets. Does this include the
> Squeak world menu bar? I'm looking to avoid having a
> window-within-a-window situation. Ideally, to the novice eye, the end user
> would have no indication that this is a smalltalk application.
>
> -david
>
>
>> Send Beginners mailing list submissions to
>> 	beginners at lists.squeakfoundation.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>> 	http://lists.squeakfoundation.org/mailman/listinfo/beginners
>> or, via email, send a message with subject or body 'help' to
>> 	beginners-request at lists.squeakfoundation.org
>>
>> You can reach the person managing the list at
>> 	beginners-owner at lists.squeakfoundation.org
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of Beginners digest..."
>>
>>
>> Today's Topics:
>>
>>     1. sandboxing a world (David Holiday)
>>     2. Re: sandboxing a world (Herbert K?nig)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Sun, 13 Oct 2013 01:23:56 -0700
>> From: David Holiday <neuburge at rohan.sdsu.edu>
>> Subject: [Newbies] sandboxing a world
>> To: beginners at lists.squeakfoundation.org
>> Message-ID: <B8C798A9-A2CE-40A4-B0A8-86765205B84D at rohan.sdsu.edu>
>> Content-Type: text/plain; charset="us-ascii"
>>
>> Hi all,
>>
>> I'm just now getting into squeak and finding it a delightful programming
>> environment. I am, however, curious as to why some features don't seem
>> readily available. First and foremost, why isn't there a stripped down
>> version of the VM that runs Squeak programs and nothing else? That is, why
>> isn't it possible to distribute Squeak program to users in the way Java
>> developers distribute Java programs?
>>
>> To put this another way, let's say I'm a Squeak developer and I want to
>> distribute my program to a community of people that does X. Under the
>> current paradigm, all the people that do X also have to be Squeak savvy
>> people if they are going to make use of my program. They have to be savvy
>> enough to know what it is, install it, run it, install my program, and run
>> my program. Moreover, they have to know enough about the Squeak interface
>> to know what to do if they accidentally close my program window.
>> Conversely, with Java, the user doesn't have to know anything about Java
>> beyond downloading JVM. In this way, I can distribute my program to
>> everyone that does X without having to worry about whether or not they
>> also know anything about Squeak.
>>
>> So why isn't something like this available?
>>
>>
>> David Holiday
>> -------------------------------------------------
>> San Diego State University
>> neuburge at rohan.sdsu.edu
>>
>>
>>
>>
>>
>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> http://lists.squeakfoundation.org/pipermail/beginners/attachments/20131013/52827f6b/attachment.html
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Sun, 13 Oct 2013 11:21:46 +0200
>> From: Herbert K?nig <herbertkoenig at gmx.net>
>> Subject: Re: [Newbies] sandboxing a world
>> To: beginners at lists.squeakfoundation.org
>> Message-ID: <525A662A.2060201 at gmx.net>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Hi David
>>
>> replying to the contents of your mail not to the subject. Sandboxing is
>> a different matter.
>>
>> There are several ways to distribute Squeak as an application. The
>> Squeak all in one is an example.
>>
>> Disclaimer: I never distributed a packaged Squeak application myself.
>>
>> An overview:
>>
>> When Squeak is saved it starts just where it was saved, e.g. with an
>> animation (or your app) runnig.
>>
>> There's a startup list in which you can enter messages which are sent on
>> system startup. (e.g. start and initialize your app)
>>
>> Squeak can take a command line parameter which is the name of a file
>> with Smalltalk source which will be executed. This may start your app.
>>
>> There's a lockdown script which can be used to make the dev tools
>> unavailable to the end user.
>>
>> Scratch and Etoys are examples of applications with the development
>> tools hidden.
>>
>> In the preferences you will find options to disable the search for a
>> sources and changes file and other things you may find useful for
>> distributing an application.
>>
>> You can resource-hack the icon of Squeak and just replace the splash
>> screen with your own picture.
>>
>> If you want an installable package, people use some of the freely
>> available installer generators.
>>
>> Not sure if this list is exhaustive.
>>
>> As a first start I suggest you download the all in one from squeak.org.
>> Then bring your image in a state that you would call "My application
>> running". Save that image.  Use that image and changes to replace the
>> image and changes in the all in one (Assuming you use Squeak 4.4 for
>> your app). Voila, you have a one click application that runs on Win,
>> Linux, Mac.
>>
>> Due to the nature of Smalltalk there is no different VM for an
>> application. There is no difference beteween e.g. the compiler or your
>> application. Both are just objects that get sent messages. The VM runs
>> both in the same way.
>>
>> Then maybe you can ask more specific questions.
>>
>>
>> Cheers
>>
>> Herbert
>>
>> Am 13.10.2013 10:23, schrieb David Holiday:
>>> Hi all,
>>>
>>> I'm just now getting into squeak and finding it a delightful
>>> programming environment. I am, however, curious as to why some
>>> features don't seem readily available. First and foremost, why isn't
>>> there a stripped down version of the VM that runs Squeak programs and
>>> nothing else? That is, why isn't it possible to distribute Squeak
>>> program to users in the way Java developers distribute Java programs?
>>>
>>> To put this another way, let's say I'm a Squeak developer and I want
>>> to distribute my program to a community of people that does X. Under
>>> the current paradigm, all the people that do X also have to be Squeak
>>> savvy people if they are going to make use of my program. They have to
>>> be savvy enough to know what it is, install it, run it, install my
>>> program, and run my program. Moreover, they have to know enough about
>>> the Squeak interface to know what to do if they accidentally close my
>>> program window. Conversely, with Java, the user doesn't have to know
>>> anything about Java beyond downloading JVM. In this way, I can
>>> distribute my program to everyone that does X without having to worry
>>> about whether or not they also know anything about Squeak.
>>>
>>> So why isn't something like this available?
>>>
>>>
>>> David Holiday
>>> -------------------------------------------------
>>> San Diego State University
>>> neuburge at rohan.sdsu.edu <mailto:neuburge at rohan.sdsu.edu>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> http://lists.squeakfoundation.org/pipermail/beginners/attachments/20131013/08bf24e2/attachment-0001.htm
>>
>> ------------------------------
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>>
>> End of Beginners Digest, Vol 90, Issue 2
>> ****************************************
>>
>



More information about the Beginners mailing list