For anyone following this thread, I thought I'd report on my solution here.
To include the build data in my app, I used 'Rake', the build tool of
the ever-so-shiny Ruby language. Every time I run rake, an XML file is
generated (compilationData.xml) that contains the time at which the
build was produced.
Since I was already introducing a fairly heavyweight build tool like
Rake, I thought I'd automate the building of several different 'flavors'
of my app as well - something I had previously done manually. (These
'flavors' are the various binary combinations of 'Debug' and 'Pro'.)
Compilation is provided via the ropenlaszlo ruby gem, and
distribution-ready packages are prepared with a variety of shell
commands (cp, zip, etc.)
If you're intrigued by what this 'Featurific' thing might be, feel free
to check out http://featurific.com .
Hope this helps someone else! :)
-Rich
<begin Rakefile>
# Written by Rich following the instructions at
http://weblog.openlaszlo.org/archives/2006/01/deploying-openlaszlo-applications-with-rake/
# Also used http://sishen.lifegoo.com/?p=41 as a guide
# Before running 'rake' you'll need to ensure you've run the following
commands to properly set your env vars
# export OPENLASZLO_HOME=/Applications/OpenLaszlo\ Server\
4.0.2/Server/lps-4.0.2 # location of the OpenLaszlo SDK on the file system
# export
OPENLASZLO_URL=http://localhost:8080/lps-4.0.2
# URL of the OpenLaszlo server
require 'rubygems'
require 'ropenlaszlo'
require 'rake/clean'
@@time = Time.new
BUILD_DIR = "build"
ARCHIVE_DIR = File.join(BUILD_DIR, 'archives')
F_FREE_DIR = File.join(ARCHIVE_DIR, 'Featurific')
F_PRO_DIR = File.join(ARCHIVE_DIR, 'FeaturificPro')
directory(BUILD_DIR)
directory(ARCHIVE_DIR)
directory(F_FREE_DIR)
directory(F_PRO_DIR)
CLEAN.include(File.join(BUILD_DIR, '*.swf')) # Remove all SWFs (leave
archives dir intact)
CLOBBER.include(BUILD_DIR) # Remove all build files
##### Compile main.lzx to .swf
# NOTE: Since we :clean before every compilation, we don't need to
include all lzx files as dependencies. This means the app will be
# re-built from scratch on *every* 'rake' (otherwise, the app would only
be rebuilt if main.lzx had been changed)
file File.join(BUILD_DIR, 'main.swf') => ['main.lzx', :clean, BUILD_DIR,
F_FREE_DIR, F_PRO_DIR] do
# in out rt
debug pro
compile('main.lzx', 'featurific.swf', 'swf8',
false, false)
compile('main.lzx', 'featurificDebug.swf', 'swf8',
true, false)
compile('main.lzx', 'featurificPro.swf', 'swf8',
false, true)
compile('main.lzx', 'featurificProDebug.swf', 'swf8',
true, true)
end
def compile(infile, outfile, runtime, debug, pro_version)
puts "\nCompiling #{infile} to #{outfile}
(runtime:#{runtime},\tdebug:#{debug},\tpro_version:#{pro_version})" if
verbose
prepare_compilation_data(pro_version)
puts "Compiling..."
OpenLaszlo::compile infile, {:output => File.join(BUILD_DIR, outfile),
:runtime => runtime, :debug => debug}
if pro_version
cp File.join(BUILD_DIR, outfile), File.join(F_PRO_DIR, outfile)
else
cp File.join(BUILD_DIR, outfile), File.join(F_FREE_DIR, outfile)
end
end
def prepare_compilation_data(pro_version)
puts "Preparing compilation data" if verbose
open("compilationData.xml",'w') do |outfile|
outfile.puts "<data>"
outfile.puts "\t<buildTime value='#{@@time}'/>"
outfile.puts "\t<proVersion value='#{pro_version}'/>"
outfile.puts "</data>"
end
end
##### Create archives
desc "Build the app and create distro archives"
task :create_archives => [:clobber, ARCHIVE_DIR, File.join(BUILD_DIR,
'main.swf')] do
puts "\nCreating archives" if verbose
# Common files
cp_r File.join('buildResources', 'common', '.'), F_FREE_DIR
cp_r File.join('buildResources', 'common', '.'), F_PRO_DIR
# FREE
cp_r File.join('buildResources', 'FREE', '.'), F_FREE_DIR
# Pro
cp_r File.join('buildResources', 'Pro', '.'), F_PRO_DIR
sh "cd #{F_FREE_DIR} && zip -qr -9 ../featurific.zip *"
sh "cd #{F_PRO_DIR} && zip -qr -9 ../featurificPro.zip *"
end
##### Default - Compile
task :default => File.join(BUILD_DIR, 'main.swf')
<end Rakefile>
<begin output>
Fuji:/Applications/OpenLaszlo Server 4.0.2/Server/lps-4.0.2/gallery3
rich$ rake create_archives
(in /Applications/OpenLaszlo Server 4.0.2/Server/lps-4.0.2/gallery3)
rm -r build/featurific.swf
rm -r build/featurificDebug.swf
rm -r build/featurificPro.swf
rm -r build/featurificProDebug.swf
rm -r build
mkdir -p build/archives
mkdir -p build/archives/Featurific
mkdir -p build/archives/FeaturificPro
Compiling main.lzx to featurific.swf (runtime:swf8, debug:false,
pro_version:false)
Preparing compilation data
Compiling...
cp build/featurific.swf build/archives/Featurific/featurific.swf
Compiling main.lzx to featurificDebug.swf (runtime:swf8,
debug:true, pro_version:false)
Preparing compilation data
Compiling...
cp build/featurificDebug.swf build/archives/Featurific/featurificDebug.swf
Compiling main.lzx to featurificPro.swf (runtime:swf8, debug:false,
pro_version:true)
Preparing compilation data
Compiling...
cp build/featurificPro.swf build/archives/FeaturificPro/featurificPro.swf
Compiling main.lzx to featurificProDebug.swf (runtime:swf8,
debug:true, pro_version:true)
Preparing compilation data
Compiling...
cp build/featurificProDebug.swf
build/archives/FeaturificPro/featurificProDebug.swf
Creating archives
cp -r buildResources/common/. build/archives/Featurific
cp -r buildResources/common/. build/archives/FeaturificPro
cp -r buildResources/FREE/. build/archives/Featurific
cp -r buildResources/Pro/. build/archives/FeaturificPro
cd build/archives/Featurific && zip -qr -9 ../featurific.zip *
cd build/archives/FeaturificPro && zip -qr -9 ../featurificPro.zip *
<end output>
P T Withington wrote:
The debug version is formatted to the debug console (and only
available in debug). The canvas version is available in all apps and
returns a string that can be displayed by your application.
Maybe file an improvement request to add the app compile timestamp to
that info...
On 2007-10-30, at 13:22 EDT, Henry Minsky wrote:
The actual call to get the info as a string is
LzCanvas.versionInfoString()
On 10/30/07, Henry Minsky <[EMAIL PROTECTED]> wrote:
Hmm, that's a good idea, I don't think the compiler bakes the date
that
the app was compiled into the app anyplace. It does bake in the
information
on the version of LPS that is running though:
Debug.versionInfo ()
will return a string like this
Debug.versionInfo
lzx> Debug.versionInfo
()
URL:
http://127.0.0.1:8080/trunk/test/forum2/main.lzx?lzt=object&lzt=object&lzr=dhtml&debug=true&lzbacktrace=true
Version: 4.1.x.0
Release: Latest
Build: 7031 C:\users\hqm\openlaszlo\trunk
Date: 2007-10-28T20:54:17-0400
Target: dhtml
Runtime: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.8.1.8)
Gecko/20071008 Firefox/2.0.0.8
lzx>
On 10/30/07, Rich Christiansen <[EMAIL PROTECTED]> wrote:
I'm currently dealing with the unpleasant headache of tracking various
installations of different versions of my SOLO app. I've added
functionality to display the version number of the app, but I'd also
like to include a build number. In fact, I'd prefer to just use the
time at which the app was built if that's possible.
How could I go about doing this? Some sort of preprocessing
directive?
Thanks in advance! :)
-Rich
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]