> On Tue, Sep 10, 2013 at 9:32 AM, Art Heimsoth
> <artst...@artheimsoth.com> wrote:
>
>> I use the nsis installer to build and support my package.  I also
>>
>> use ooSQLite in the package and prior to the last release of
>> ooSQLite,
>>
> I simply copied the needed files to the appropriate folder.  That
> will still work, but I would like to add detection to my installer
> such that I would only install the ooSQLite modules if there is a
> later version or if it was not originally installed on the target
> system. For ooRexx and ooDialog, I use the system environment area
> in combination with a simple rexx command to collect the level of
> each component and then only install them if the ones in the
> release are a later level.  Is this, or a similar method available
> with the ooSQLite release?  All I would need would be a capability
> to detect if it is installed via Rexx and if so, return the level
> of the installed package.  Thanks for any suggestions.
>
>
> Hi Art,
>
>
> I'm not sure if I completely understand your requirements for
> ooSQLite or not, but it is similar to ooDialog in that it has a
> version command that will tell you the level of the installed
> ooSQLite.  In the examples under examples\version there is
> version.rex that shows the different version formats.
>
>
> Here is one line from that file:
>
>
> say 'ooSQLite version (compact):    ' .ooSQLite~version('C')
>
>
> The output is:
>
> ooSQLite version (compact):     1.0.0.9416
>
>
> on my system today.  The compact version is always going to be
> incrementally bigger for each build.
>
>
> The one difference between ooSQLite and ooDialog, currently, is
> that if ooRexx is installed, there is always some version of
> ooDialog installed.  That's not true for ooSQLite
>
>
> The latest version of ooSQLite, on Windows, has a Windows installer
> that installs ooSQLite to the ooRexx installation directory.
>
>
> I'm not sure how you detect that ooRexx is installed.  But, if
> ooSQlite is installed using the Windows installer, you could detect
> it this way in pseudo code:
>
>
> if ooRexx installed then do
>   if file ooSQLite.dll exists in ooRexx installation directory
> then do       run ooSQLite version command       parse output for
> version     end end
>
>
> If ooSQlite is installed using the .zip file then the user could
> have installed it anywhere.  You could use a similar process as
> above. NSIS might have a way to see if a file exists in the path.  
> If so you could see if ooSQLite.dll exists.  If not you could do
> something like:
>
>
> if ooRexx installed then do
>     run Rexx command to test for ooSQLite
>
>     parse output for version
> end
>
>
> In this last case you need a Rexx program that uses loadPackage()
> to load ooSQLite.cls and traps an error.  If you do get an error,
> then ooSQLite is not installed.  If you don't get any error, it is
> installed and then you can go ahead and run you ooSQLite version
> command to get the installed version.
>
>
> Here is some code from the test suite (ooTest) that should give you
> an idea on how to do that
>
>
> signal on any name loadErr
> .context~package~loadPackage('WinUtils.cls')
> return
>
>
> loadErr:
> err = .ExceptionData~new(timeStamp(), s, .ExceptionData~TRAP)  
> err~setLine(sigl)   err~conditionObject = condition('O')
> err~msg = "Could not load 'WinUtils.cls' the package needed for
> this test group."   err~severity = "Unrecoverable"
>
>
> testResult~addException(err)
> testResult~stop
> return 
>
>
> So, for ooSQLite, in pseudo code again, you would do something
>
>
> signal on any name loadErr
> .context~package~loadPackage('ooSQLite.cls')
> -- Okay we have ooSQLite
> ver = .ooSQLite~version('C')
> compare ver to what you need
> -- do whatever
>
>
> return
>
>
> loadErr:
> -- Okay no ooSQLite on this machine,
> -- or it is not installed correctly
> do whatever
> return 
>
>
> In this scenario, you could not be sure that ooSQLite is not
> installed, you could just know that ooSQLite.cls is not in the
> default path.  A user could, for instance, have it installed
> somewhere and use a batch file to add it to the path when they go
> to work with it.  Not likely for a typical user, but I often do
> that.
>
>
> Let me know if you need more help on this topic.
>
>
> By the way, the ooSQLite Windows installer writes some stuff to the
> registry.  In your NSIS installer, you could read those registry
> values to see if they exist to test if ooSQLite is installed.  This
> would only work if it is a recent install of ooSQLite though.
>
>
> --
> Mark Miesfeld

Thanks Mark, that is way more than I needed, but clear enough
that I can use it.

--
 Art Heimsoth - artst...@artheimsoth.com
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. Consolidate legacy IT systems to a single system of record for IT
2. Standardize and globalize service processes across IT
3. Implement zero-touch automation to replace manual, redundant tasks
http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-users mailing list
Oorexx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-users

Reply via email to