Today's Smalltalk Daily looks at adding error handling (for the runtime) via the build script. We're adding the basic stuff from RuntimePackager, but you can customize from there. The build script is just below; You can also just skip to the video
"build a simple app"
"load all my needed parcels - including RTP"
[#( '$(VISUALWORKS)/packaging/RuntimePackager.pcl'
'SampleApp.pcl') do: [:each |
Parcel loadParcelFrom: each]]
on: MissingParcelSource
do: [:ex | ex resume: true].
"turn change log off, so that we can ship patches reasonably"
'ChangeSet.BroadcastChanges' asQualifiedReference
ifDefinedDo: [:flag |
'ChangeSet.BroadcastChanges' asQualifiedReference value: false].
"Set herald string"
ObjectMemory setHeraldString: 'This is an Example Application in VisualWorks'.
"reset parcel path"
Parcel searchPathModel value removeAll.
"set up runtime state"
DeploymentOptionsSystem current startInRuntime: true.
"set up runtime state (NOTE: This block is commented out
so that we can see the results in the example.
UI.WindowManager noWindowBlock: [:windowManager | ].
stream := WriteStream on: String new.
stream nextPutAll: 'changeRequest'; cr; cr; tab.
stream nextPutAll: '^true'.
VisualLauncher compile: stream contents.
VisualLauncher allInstances do:
[:each | each closeAndUnschedule. each release]."
"Install Error Handling - This is the new segment"
Notifier current: RuntimePackager.RuntimeEmergencyNotifier.
RuntimePackager.RuntimeEmergencyNotifier
imageDumperClass: RuntimePackager.RuntimeFullDumper.
RuntimePackager.RuntimeManager errorLogPath: 'error.log'.
Notifier logToFile: true.
ObjectMemory garbageCollect.
Workbook allInstances do: [:each | each closeRequest].
(Delay forSeconds: 20) wait.
Parcel searchPathModel value: (List with: (PortableFilename named: '.')).
SourceFileManager default discardSources.
"Now save the image such that this file does not get looked for at startup"
[ObjectMemory permSaveAs: 'sample' thenQuit: false] fork.
[(Delay forSeconds: 45) wait.
RuntimeSystem isRuntime ifFalse: [ObjectMemory quit]] fork
Click on the viewer below to watch it now:
If you have trouble viewing that directly, you can click here to download the video directly
You can also watch it on YouTube:
Technorati Tags:
smalltalk, runtime, build script, error handler