Of standalones, bundles and files
Joel Guillod
joel.guillod at net2000.ch
Fri Jan 28 05:11:10 EST 2005
Dave,
> Date: Thu, 27 Jan 2005 23:27:32 -0700
> From: David Squance <dsquance at elkvalley.net>
> Subject: Of standalones, bundles and files
>
> I'm using RR2.1.2 on OSX, and would like to avoid using the standalone
> builder, as it takes 30 to 40 minutes doing something with a particular
> substack. Is there a reason why I shouldn't just build the
> splashscreen stack and put the 'real' rev file in the same folder and
> avoid having it in the build? And if I do this, is there a way to get
> the file inside the OS X bundle?
> Dave
Recently Trevor DeVore <lists at mangomultimedia.com> gave me the answer
("the" at least for me!):
http://mangomultimedia.com/developer/revolution/using_externals.html
My preferred way to fastly swap from developing to testing the
implementation is to build the standalone as one stack with just the
startup screen and the script below. That way I dont need to wait the
long process of building a dozens stacks applications. My application
folder looks like this:
path/Application Folder
path/StandaloneApplication -- this is the standalone
path/StandaloneStack -- Optional but practical for swaping between Dev
and Standalone: This is the one stack used to build the standalone. Its
card contains the script below and a splah screen.
path/plugins/Startup -- this is my initialization stack: I put in its
"preOpenstack" all the scripts to executed to initialize my
application.
path/plugins/ExternalLoader -- during initialization I do a: <go
invisible to stack "ExternalLoader"> to load the externals (see the
above link from Trevor).
path/plugins/many_other_stacks_used_by_your_application -- These are
the stacks of my application.
path/plugins/externals/ -- this is the folder in which I put the
externals
path/plugins/externals/revdb.bundle -- this is the externals for
database
path/plugins/externals/revdb.dll -- this is the externals for database
path/plugins/externals/revxml.bundle -- this is the externals for xml
path/plugins/externals/revxml.dll -- this is the externals for xml
Script inside the unique card of the StandaloneApplication stack looks
like this (I use a variant because I have a rolling script for a field
displayed on the startup screen, I can share the whole stack if you'd
like to):
on startup
send startApplication to me in 3 secs -- dont do "startApplication"
directly because some libraries will not be loaded, see documentation
under the note under subject "revGoURL".
end startup
constant kStarterStack = "plugins/Startup"
/** startApplication
@purpose To start the application according to the convention.
@convention Just next to the application file there should be a
"plugins" folder with a "Startup" stack (depends on constant
kStarterStack).
@convention This "startup" stack is just responsable to start the
application when it receives a preOpenstack message.
*/
on startApplication
put the short name of this stack into kApplicationStack
start using stack kApplicationStack
put startupStackFilepath() into tStartupStack
if there is a stack tStartupStack then
hide stack kApplicationStack
open stack tStartupStack
else
-- this is the french translation : answer error "Le module de
démarrage de l'application est introuvable! Veuillez vérifier votre
configuration!" &cr&cr& tStartupStack with "Quitter"
answer error "The Startup module has not been found! Please check
your configuration!" &cr&cr& tStartupStack with "Quit"
quit
end if
end startApplication
function startupStackFilepath
set the itemdel to "/"
put my_applicationStack() into f
put kStarterStack into last item of f
return f
end startupStackFilepath
function my_applicationStack
put the filename of me into f
if the platform is "MacOS" and char 1 of the systemVersion is "1" then
--it's a bundle
get offset("/Contents/MacOS/",f)
if it>0 then delete char it to -1 of f
end if
return f
end my_applicationStack
Note that for MacOSX bundle it should be possible to adapt the
startupStackFilepath() so the plugins folder is placed inside the
bundle folder.
This is just a summary. If many are interested, I will take some hours
to polish my own stacks and put them as a complete sample downloadable
from the net. I wrote some usefull utility scripts to manage the
application settings. Let me know!
Joel Guillod - www.imed.ch
More information about the use-livecode
mailing list