Jump to content

Is it's possible? to read from ini file


Recommended Posts

Hello,

This is one of my few first attempt in autoit scripting, yes I'm newbie. It may look very basic so bear with me, it's quite long and repeative stuffs in there and I'm sure there's plenty of room for improvement to my code. Ok let's get to the point, I'm wondering if it's possible to read from applist.ini for listing of software to run application's silent install for instance...

\\uncpath\app1.exe /silent
\\uncpath\app2.msi /qn
so on and on...

so that way I don't have to go back into source code and edit every now and then. I only want to make revision to applist.ini

Here's my Code, feel free to make suggestion how I can improve this.

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>

;--Declaring Varibles
$repository = "\\CLASSROOMSVR\Public\Apps\"
$profile = "\\CLASSROOMSVR\Public\Profile\"
$applist = "\\CLASSROOMSVR\Public\Apps\List.txt"

;--Main GUI
Opt("GUIOnEventMode", 1)
$mainwindow = GUICreate("Post-Install for 32-bits", 250, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$status = GUICtrlCreateLabel ("Ready ", 10, 10, 205)
$status2 = GUICtrlCreateLabel ("", 10, 25, 205, 20)
$progressbar1 = GUICtrlCreateProgress(10, 45, 205, 20)
GUICtrlCreateLabel ("Techincal Support", 10, 70, 190)
GUICtrlCreateLabel ("IT@XXXXX.XXX", 10, 85, 190)
$button = GUICtrlCreateButton("Start", 120, 120, 60, 25)
$quitbutton = GUICtrlCreateButton("Abort", 185, 120, 60, 25)
GUICtrlSetOnEvent($button, "Go")
GUICtrlSetOnEvent($quitbutton, "Quit")
GUISetState(@SW_SHOW)   

While 1
    Sleep(1000) ;--Idling around
WEnd

Func Go()
    MsgBox(0, "Important Information", "This will take anywhere between 2-4 hours depending on processor speed and condition of network traffic.")
    GUICtrlSetState($button, $GUI_DISABLE)
    GUICtrlSetState($quitbutton, $GUI_DISABLE)
    
    ;--check to see if this computer's within campus network
    GUICtrlSetData ($status, "Searching for Repository")
    GUICtrlSetData ($status2, "Please Wait...")
    If FileExists ($repository) Then
        GUICtrlSetData ($status, "Copying Files:")
        GUICtrlSetData ($status2, "[1/2] - USBDLM Service")
        GUICtrlSetData ($progressbar1, 100 - 98)
        FileCopy( $repository & "USBDLM\32x86\*", "C:\Tools\USBDLM\", 1)
        
        Sleep ( 2000 )
        GUICtrlSetData ($status2, "[2/3] - Desktop Background")
        GUICtrlSetData ($progressbar1, 100 - 96)
        FileCopy( $profile & "GIL.jpg",  "C:\Default_Profile\", 1)
    
        Sleep ( 2000 )
        GUICtrlSetData ($status2, "[3/3] - Theme Style")
        GUICtrlSetData ($progressbar1, 100 - 94)
        FileCopy( $profile & "Themes\*", @WindowsDir & "\resources\Themes\", 1)
    
        Sleep ( 2000 )
        GUICtrlSetData ($status, "Installing:")
        GUICtrlSetData ($status2, "[1/11] - USBDLM Service")
        GUICtrlSetData ($progressbar1, 100 - 92)
        RunWait ( "C:\USBDLM\USBDLM.exe -silentinstall", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[2/11] - Microsoft Security Essentials")
        GUICtrlSetData ($progressbar1, 100 - 90)
        RunWait ( $repository & "mssefullinstall-x86fre-en-us-xp.exe /s /runwgacheck /o", @SW_HIDE)
        
        Sleep (2000)
        GUICtrlSetData ($status2, "[3/11] - Latest Antivirus Definition")
        GUICtrlSetData ($progressbar1, 100 - 75)
        RunWait ( @ProgramFilesDir & "\Microsoft Security Essentials\MpCmdRun.exe -SignatureUpdate", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[4/11] - Spybot Search & Destory")
        GUICtrlSetData ($progressbar1, 100 - 70)
        RunWait ( $repository & "spybotsd.exe /VERYSILENT /NORESTART /COMPONENTS=MAIN /tasks=!launchteatimer", @SW_HIDE)
        GUICtrlSetData ($status2, "[5/11] - Spybot Search & Destory Definition")
        GUICtrlSetData ($progressbar1, 100 - 78)
        RunWait ( @ProgramFilesDir & "\Spybot - Search & Destroy\SpybotSD.exe /taskbarhide /autoclose /autoupdate /autoimmunize", @SW_HIDE)
        
        Sleep(2000)
        GUICtrlSetData ($status2, "[6/11] - Microsoft Office 2007 SP2")
        GUICtrlSetData ($progressbar1, 100 - 65)
        RunWait ( $repository & "Office2007\setup.exe", @SW_SHOW)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[7/11] - CCleaner")
        GUICtrlSetData ($progressbar1, 100 - 40)
        RunWait ( $repository & "ccleaner.exe /S", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[8/11] - Defraggler")
        GUICtrlSetData ($progressbar1, 100 - 35)
        RunWait ( $repository & "defraggler.exe /S", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[9/11] - Flash Player")
        GUICtrlSetData ($progressbar1, 100 - 30)
        RunWait ( $repository & "install_flash_player.exe /silent", @SW_HIDE)
        RunWait ( $repository & "install_flash_player_ax.exe /silent", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[10/11] - Adobe PDF Reader")
        GUICtrlSetData ($progressbar1, 100 - 25)
        RunWait ( $repository & "AdbeRdr920_en_US.exe /msi /norestart /quiet", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status2, "[11/11] - Java Runtime v6 update 17")
        GUICtrlSetData ($progressbar1, 100 - 20)
        RunWait ( $repository & "jre-6u17-windows-i586-s.exe /q", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status, "Purging:")
        GUICtrlSetData ($status2, "[1/2] - Desktop Shortcuts")
        GUICtrlSetData ($progressbar1, 100 - 10)
        FileDelete("%userprofile%\Desktop\*")
        FileDelete("%allusersprofile%\Desktop\*")
        
        Sleep (2000)
        GUICtrlSetData ($status2, "[2/2] - Removing Yahoo! Toolbar")
        GUICtrlSetData ($progressbar1, 100 - 5)
        RunWait ( @ProgramFilesDir & "\Yahoo!\Common\unyt_wrap /S", @SW_HIDE)
    
        Sleep (2000)
        GUICtrlSetData ($status, "Finished")
        GUICtrlSetData ($status2, "")
        GUICtrlSetData ($progressbar1, 100 - 0)
        GUICtrlSetState($quitbutton, $GUI_ENABLE)
        MsgBox (64, "Reboot Required", "You must restart your computer for installation to completed.")
    Else
        MsgBox (64, "Error", "You are either off-campus or do not have permission to access our software repository.")
        Exit
    EndIf
EndFunc

Func Quit()
    Exit
EndFunc
Link to comment
Share on other sites

Hello,

Ok let's get to the point, I'm wondering if it's possible to read from applist.ini for listing of software to run application's silent install for instance...

Yes, it is possible. Take a look to the help file and search for IniRead() function. Also you have the following functions to work with ini files:

IniDelete, IniWrite, IniReadSection, IniReadSectionNames, IniRenameSection, and IniWriteSection

AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line
Link to comment
Share on other sites

Seem like ini limited to reading from key only? but something else caught my eyes FileReadLine() this may be what I'm looking for, for starting point, will this work?

$applist = FileOpen("apps.ini", 0)

; Check if file opened for reading OK
If $applist = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf

; Read in lines of text until the EOF is reached
While 1
    $line = FileReadLine($applist)
    If @error = -1 Then ExitLoop
    RunWait ($line, @SW_HIDE)
Wend

FileClose($applist)
Edited by firestrife23
Link to comment
Share on other sites

Seem like ini limited to reading from key only? but something else caught my eyes FileReadLine() this may be what I'm looking for, for starting point, will this work?

$applist = FileOpen("apps.ini", 0)

; Check if file opened for reading OK
If $applist = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf

; Read in lines of text until the EOF is reached
While 1
    $line = FileReadLine($applist)
    If @error = -1 Then ExitLoop
    RunWait ($line, @SW_HIDE)
Wend

FileClose($applist)

I'm getting the impression that you are trying to read a flat text file and not a properly structured INI file.

Th INI functions work with a file structured like this.

[section1]

key1=value1

key2=value2

[section2]

key1=value1

key2=value2

FileReadLine() is the slowest possible method to loop through a file one line at a time. Read the explanation in the help file. Better to move it to an array and then loop through that.

#include<array.au3> ;; for _ArrayDisplay() only.
$sTxt = FileRead("C:\path\Somefile.txt") ;; No FileOpen() is required
$sTxt = StringStripWS($sTxt, 3);; Not needed, it's here just to make sure you don't have empty lines before or after the actual text.
$aTxt = StringRegExp($sTxt, "(?m:^).+(?:\v|\z)+", 3);; Create a 0 based array of the lines.
If NOT @Error Then
    ;; This is where your code goes (looping through elements).  I'll just display the array
    ;; For $i = 0 To Ubound($aTxt) -1
          ;; do something
    ;; Next
    _ArrayDisplay($aTxt)
Else
    MsgBox(0, "Error", "Houston, we have a problem")
EndIf
Edited by GEOSoft

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

You've got really interesting point here, I like sticking with ini due to well organized information under sections and such. I've came up with this, seem to be working.

$applist = "C:\Users\Jason\list.ini"

$var = IniReadSection( $applist, "SOFTWARE")
If @error Then
    MsgBox(4096, "", "Error occurred, missing INI file.")
Else
    For $i = 1 To $var[0][0]
        RunWait($var[$i][1], @SW_HIDE)
    Next
EndIf
Link to comment
Share on other sites

That's much better to use anyway. The only thing wrong now is your error message. @Error does not mean that the file definitely doesn't exist. It shows that either

  • The ini file doesn't exist
  • The function was unable to read the specified section

EDIT: A better method is to do more error checking.

$applist = "C:\Users\Jason\list.ini"
If FileExists($applist) Then
    $var = IniReadSection( $applist, "SOFTWARE")
    If @error Then
        MsgBox(4096, "Error", "Unable to read section.")
    Else
        For $i = 1 To $var[0][0]
            RunWait($var[$i][1], @SW_HIDE)
        Next
    EndIf
Else
    MsgBox(4096, "Error", "The INI file does not exist.")
EndIf
Edited by GEOSoft

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Thanks, that's awesome! what if value is something like \app\installer.msi /qb as you can see there's space in there will that cause problem, should i put in quotation mark inside ini file?

It could but not too likely.

Have you tried using ShellExecuteWait() instead of RunWait()?

If that works then I have a simple solution to yout quandry.

$sCmd = "\app\installer.msi /qb" ;; This would actually be $sCmd = $var[$i][1] in your script (For/Next)
$aCmd = StringRegExp($sCmd, "(.*\.\w{3})\s*(.*)", 1);; convert the ini value to an array where[0] = command and [1] = prams
If NOT @Error Then
    ShellExecuteWait($aCmd[0], $aCmd[1], "", "", @SW_HIDE)
EndIf

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

GEOsoft,

I like your solution, I'm trying my best to follow you, hopefully i get this this right... see below. Sorry If I got too many questions, obviously I have alot to learn.

Func Go()
    GUICtrlSetState($button, $GUI_DISABLE)
    GUICtrlSetState($quitbutton, $GUI_DISABLE)
        If FileExists($applist) Then
            $var = IniReadSection( $applist, "SOFTWARE")
            If @error Then
                MsgBox(64, "Error", "Unable to read INI file.")
            Else
                For $sCmd = $var[$i][1]
                    $aCmd = StringRegExp($sCmd, "(.*\.\w{3})\s*(.*)", 1)
                    If NOT @Error Then
                        ShellExecuteWait($aCmd[0], $aCmd[1], "", "", @SW_HIDE)
                    EndIf
                    Sleep(2000)
                Next
            EndIf
        Else
            MsgBox(64, "Error", "You are either off-campus or do not have permission to access our software repository.")
            Exit
        EndIf
EndFunc

Assuming list.ini should read as in:

[SOFTWARE]
\LanguageDept\app1\setup.exe= /silent
\LanguageDept\app2\install.msi= /qb /norestart

Once I get that underway, then my next step is to figure out how to dynamically update GUICtrlSetData for Message such as "Installing Office 2007" so on and on, I think I've made my script quite complicated LOL.

Edited by firestrife23
Link to comment
Share on other sites

We would need to see some of your GUI code to get that sorted out. Up until now there was nothing that indicated you were even using a GUI.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

We would need to see some of your GUI code to get that sorted out. Up until now there was nothing that indicated you were even using a GUI.

No problem but it's incomplete, still a work in progress. So here goes...

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>

;--Declaring Varibles
$repository = "\\CLASSROOMSVR\Public\Apps\"
$profile = "\\CLASSROOMSVR\Public\Profile\"
$applist =  $repository & "list.ini"

;--Main GUI
Opt("GUIOnEventMode", 1)
$mainwindow = GUICreate("Post-Install for 32-bits", 250, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$status = GUICtrlCreateLabel ("Ready ", 10, 10, 205)
$progressbar1 = GUICtrlCreateProgress(10, 45, 205, 20)
GUICtrlCreateLabel ("Techincal Support", 10, 70, 190)
GUICtrlCreateLabel ("IT@xxxx.xxx", 10, 85, 190)
$button = GUICtrlCreateButton("Start", 120, 120, 60, 25)
$quitbutton = GUICtrlCreateButton("Abort", 185, 120, 60, 25)
GUICtrlSetOnEvent($button, "Go")
GUICtrlSetOnEvent($quitbutton, "Quit")
GUISetState(@SW_SHOW)   

While 1
    Sleep(1000) ;--Idling around
WEnd

Func Go()
    GUICtrlSetState($button, $GUI_DISABLE)
    GUICtrlSetState($quitbutton, $GUI_DISABLE)
        If FileExists($applist) Then
            $var = IniReadSection( $applist, "SOFTWARE")
            If @error Then
                MsgBox(64, "Error", "Unable to read INI file.")
            Else
                For $sCmd = $var[$i][1]
                    $aCmd = StringRegExp($sCmd, "(.*\.\w{3})\s*(.*)", 1)
                    If NOT @Error Then
                        ShellExecuteWait($aCmd[0], $aCmd[1], "", "", @SW_HIDE)
                    EndIf
                    Sleep(2000)
                Next
            EndIf
        Else
            MsgBox(64, "Error", "You are either off-campus or do not have permission to access our software repository.")
            Exit
        EndIf
EndFunc

Func Quit()
    Exit
EndFunc
Link to comment
Share on other sites

And what is it you want updated with GUICtrlSetData(). It may be just as easy to add a section to your IniFile and read that to get the name of the App that is being installed. If you are talking about getting text from one of the installer Windows, that will be a bit more difficult to do because you are running the installs silently so there shouldn't be any window to get the text from.

EDIT: I just thought of something else. Is that sample Ini the way you have it? If it is then that RegExp probably won't work. It should be something like

[sOFTWARE]

Microsoft Office 2007=\LanguageDept\app1\setup.exe /silent

That way

$var[$i][0] would contain the name to be displayed and $var[$i][1] is the portion I split with the RegEx to get the filename and parameters with the RegExp.

Edited by GEOSoft

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

And what is it you want updated with GUICtrlSetData(). It may be just as easy to add a section to your IniFile and read that to get the name of the App that is being installed. If you are talking about getting text from one of the installer Windows, that will be a bit more difficult to do because you are running the installs silently so there shouldn't be any window to get the text from.

EDIT: I just thought of something else. Is that sample Ini the way you have it? If it is then that RegExp probably won't work. It should be something like

That way

$var[$i][0] would contain the name to be displayed and $var[$i][1] is the portion I split with the RegEx to get the filename and parameters with the RegExp.

Yes that's what I'm trying to accomplish, the problem with $var[$i][0] will only show number 1, 2, 3, instead of value i believe it's due to looping count, I think I'm not doing this right. Here's my silly attempt:

For $i = 1 To $var[0][0]
     GUICtrlSetData ($status, $var[$i][0])
     RunWait( $repository & $var[$i][1])
     Sleep(2000)
Next

EDIT: Nevermind that, felt like idiot I forgot to click save on my notepad for list.ini lol it's now showing properly.

Edited by firestrife23
Link to comment
Share on other sites

I'm very please with outcome, now I need to find out how to incorporate progress bar with this script. I only know how to do pseudo bar with fixed value but for realtime progress.... erm how does that work?

Here's latest revision of Code:

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>

;--Declaring Varibles
$repository = "\\CLASSROOMSVR\Public\Apps\"
$profile = "\\CLASSROOMSVR\Public\Profile\"
$applist =  $repository & "list.ini"


;--Main GUI
Opt ("GUIOnEventMode", 1)
$mainwindow = GUICreate("Post-Install for 32-bits", 250, 150)
GUISetOnEvent ($GUI_EVENT_CLOSE, "Quit")
$status = GUICtrlCreateLabel ("Ready ", 10, 10, 205)
$status2 = GUICtrlCreateLabel ("", 10, 25, 205, 20)
$progressbar1 = GUICtrlCreateProgress(10, 45, 205, 20)
GUICtrlCreateLabel ("Techincal Support", 10, 70, 190)
GUICtrlCreateLabel ("IT@xxxxxx.xxx", 10, 85, 190)
$button = GUICtrlCreateButton("Start", 120, 120, 60, 25)
$quitbutton = GUICtrlCreateButton("Abort", 185, 120, 60, 25)
GUICtrlSetOnEvent ($button, "Go")
GUICtrlSetOnEvent ($quitbutton, "Quit")
GUISetState(@SW_SHOW)   

While 1
    Sleep(1000) ;--Idling around
WEnd

Func Go()
    MsgBox(0, "Important Information", "This will take anywhere between 2-4 hours depending on processor speed and condition of network traffic.")
    GUICtrlSetState ($button, $GUI_DISABLE)
    GUICtrlSetState ($quitbutton, $GUI_DISABLE)
    GUICtrlSetData ($status, "Searching for Repository")
    GUICtrlSetData ($status2, "Please Wait...")
        If FileExists($applist) Then
            $var = IniReadSection( $applist, "SOFTWARE")
            $var1 = IniReadSection( $applist, "RETRIEVE")
            $var2 = IniReadSection( $applist, "UPDATE")
            $var3 = IniReadSection( $applist, "PURGE")
            If @error Then
                MsgBox(64, "Error", "Unable to read INI file.")
            Else
                GUICtrlSetData ($status, "Retrieving:")
                For $i = 1 To $var[0][0]
                    GUICtrlSetData ($status2, $var[$i][0])
                    RunWait ($profile & $var[$i][1], @SW_HIDE)
                Next
                GUICtrlSetData ($status, "Installing:")
                For $i = 1 To $var1[0][0]
                    GUICtrlSetData ($status2, $var1[$i][0])
                    RunWait ($repository & $var1[$i][1], @SW_HIDE)
                Next
                GUICtrlSetData ($status, "Updating:")
                For $i = 1 To $var2[0][0]
                    GUICtrlSetData ($status2, $var2[$i][0])
                    RunWait (@ProgramFilesDir & $var2[$i][1], @SW_HIDE)
                Next
                GUICtrlSetData ($status, "Purging:")
                For $i = 1 To $var3[0][0]
                    GUICtrlSetData ($status2, $var3[$i][0])
                    RunWait ($var3[$i][1], @SW_HIDE)
                Next
            EndIf
        Else
            MsgBox(64, "Error", "You are either off-campus or do not have permission to access our software repository.")
            Exit
        EndIf
    GUICtrlSetData ($status, "Finished")
    GUICtrlSetData ($status2, "")
    GUICtrlSetData ($progressbar1, 100 - 0)
    GUICtrlSetState($quitbutton, $GUI_ENABLE)
EndFunc

Func Quit()
    Exit
EndFunc
Link to comment
Share on other sites

I don't see any good way of setting the progress bar but there is a way to get it somewhat close. Before we do that lets take a look at the ini file structure again.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...