* Here's the code from t1.app's main program... * set classlib to tshell * local x * x= CreateObject('MyClass') * * this class should be created visually and added to t1 * project - simply a generic "custom" class * === Test Program Start === cs= 't1' build app (m.cS) from (m.cS) do (m.cs + '.app') set classlib to ok= .T. on error ok = .F. x= CreateObject('MyClass') if ! m.ok * this is what we expect of course MessageBox('Cannot create a "MyClass" object', 64, 'TShell') * so it looks as if the class library has been properly cleared endif ok= .T. erase t1.app * will fail messagebox('Erase before clear class: ' + iif(m.ok, 'Succeeded', 'Failed'), 64, 'TShell') * This shouldn't be necessary, but is! clear class myclass ok= .T. * will succeed erase t1.app messagebox('Erase after clear class: ' + iif(m.ok, 'Succeeded', 'Failed'), 64, 'TShell') on errorThe problem this creates is that I can't easily run a 'shell' program which self installs new versions of a program because any module which does get released properly remains bound up in memory. So even though I can actually fire up the new app the old app remains 'somewhere in the ether'. I would imagine that this issue would have implications for things like COM objects as well but I've yet to play with those.