> 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
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