Sign in to follow this  
Followers 0
FranckB

Installation according ini file

4 posts in this topic

Im trying to make easier the installation of software.

In a combo you can choose the model of machine.

In a list you can choose the different applications you want to add.

You can write in an ini file the 2 lists.

So if you want to add a program you write it in the ini file (you dont change the script (or exe)).

But that does not work properly.

Can someone help me ?

#include <GuiConstants.au3>
#include <GUIListBox.au3>
#include <GuiComboBoxEx.au3>

Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Cancel")
$model = IniReadSection("lance.ini", "Models")
$oneshot = IniReadSection("lance.ini", "Oneshot")

;-------------------------------------------------------------------
;----------GUI------------------------------------------------------
;-------------------------------------------------------------------

GuiCreate("Installer", 600, 450)
GUISetState ()
Local $liste, $sItems, $aItems, $ochoix, $cchoix, $ListOption;, $modl
Dim $modl
;-------combo-------------------------------------------------------

GuiCtrlCreateLabel("Select the machine model :", 10, 25)
If @error Then 
    MsgBox(4096, "", "Error ! Check for INI file.")
Else
$combo = GUICtrlCreateCombo("", 10, 45, 580, 100)
    For $i = 1 To $model[0][0]
       GUICtrlSetData($combo, $model[$i][0])
    Next
EndIf

;--------list-------------------------------------------------------

GuiCtrlCreateLabel("Select the applications to install (press CTRL to select multiple applications) :", 10, 130)
If @error Then 
    MsgBox(4096, "", "Error ! Check for INI file.")
Else
    $liste = GuiCtrlCreateList("", 10, 150, 580, 250, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))
    For $i = 1 To $oneshot[0][0]
       GUICtrlSetData($liste, $oneshot[$i][0])
    Next
EndIf

;-------------------------------------------------------------------

$bouton_Activate = GuiCtrlCreateButton("OK", 100, 405, 100, 30)
$bouton_Cancel = GuiCtrlCreateButton("Cancel", 400, 405, 100, 30)
GUICtrlSetState ( $bouton_Activate, $GUI_ENABLE)

GUICtrlSetOnEvent($bouton_Activate, "Activate")
GUICtrlSetOnEvent($bouton_Cancel, "Cancel")

;-------------------------------------------------------------------
;---------- functions----------------------------------------------
;-------------------------------------------------------------------

Func Activate()
    $aItems = _GUICtrlListBox_GetSelItemsText ($liste)
    For $iI = 1 To $aItems[0]
        $sItems &= @LF & $aItems[$iI]
    Next
    SelectionMod(GUICtrlRead ($combo))
EndFunc

Func Cancel()
    Exit
EndFunc

Func Action()
    
    For $i = 1 To $ListOption[0]
        If $oneshot[$i][0]=$ListOption[$i] then runwait @ScriptDir & $oneshot[$i][1]
    Next
    $modl = IniReadSection("lance.ini", $sItems)
    For $i = 1 To $modl[0]
        runwait @ScriptDir & $modl[$i][1]
    Next

EndFunc

Func SelectionMod($ListOption)
    $reponse = MsgBox (4, "Confirmation", "Are you sure you want to install : " & @CRLF & $ListOption & $sItems)
    If $reponse=7 then WinClose ("Confirmation")
    If $reponse=6 then Action()
EndFunc

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    Wend

Here the ini file :

;-------How to-------------------------------------------------------------

; Value name is the frienly name of the component to install.

; The value is the file name without the drive-letter.

; Program will append the drive letter where this program was launched.

; To supply parameter, enter ";" (semi-colon) after the file name followed

; by the parameter value.

;

;-------Example------------------------------------------------------------

; Install Bidule=ref\Bidule\V1.2\Bidule-V1.2.msi;/qb!

[Oneshot]

Adobe Reader 8=ref\Adobe\AdbReader.msi;/r /t:2

Foxit Reader 2.2 =ref\Foxit\FoxitReader.exe;/silent

CD Burner XP Pro=ref\cdbxppro\cdbxp_setup_4.0.024.439.exe

Deep Burner=ref\DeepBurner\DeepBurner.exe;-F2c:\logs\truc.log

PDF Creator=ref\PDFCreator\PDFCreator-0_9_5_setup.exe

[Models]

desktop=pc_desktop

laptop=pc_laptop

HP NC6400 only=NC6400

;--------Models----------------------------------------------------

[pc_desktop]

dirfixe=ref\desktop\initialkb2.msi;/i

[pc_laptop]

dirportable=ref\laptop\initialkb0.msi;/i

wifi=ref\laptop\enablewifi.msi

[NC6400]

HP SYNAPTICSTOUCHPAD V8.2=ref\HPSYNAPTICSTOUCHPAD\V8.2\Setup.exe; -S -F2c:\logs\HPSYNAPTICSTOUCHPAD-V8.2.log

HP MOBILE DATA PROTECTION SYSTEM=ref\HPMOBILEDATAPROTECTIONSYSTEM\V1\setup.exe; -S -F2c:\logs\HPMOBILEDATAPROTECTIONSYSTEM-V1.log

HP Quick Launch V6=ref\HPQuickLaunch\V6\setup.exe; -S -F2c:\logs\HPQuickLaunch-V6.log

Be indulgent for my English.

Thanks for your help.

Share this post


Link to post
Share on other sites



What exacly does not work then?

And is this part:

For $i = 1 To $modl[0]
        runwait @ScriptDir & $modl[$i][1]
Next

Isn't this: $modl[0]

Supposed to be: $modl[0][0]

In the "Func Action()", I need to runwait each value corresponding to the key that is highlight.

I can display the list of keys in :

Func SelectionMod($ListOption)
    $reponse = MsgBox (4, "Confirmation", "Are you sure you want to install : " & @CRLF & $ListOption & $sItems)
    If $reponse=7 then WinClose ("Confirmation")
    If $reponse=6 then Action()
EndFunc

But not the corresponding values.

otherwise OK for the $modl[0][0].

Share this post


Link to post
Share on other sites

I found !

it works.

#include <GuiConstants.au3>
#include <GUIListBox.au3>
#include <GuiComboBoxEx.au3>

Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Cancel")
$model = IniReadSection("lance.ini", "Models")
$oneshot = IniReadSection("lance.ini", "Oneshot")

;-------------------------------------------------------------------
;----------GUI------------------------------------------------------
;-------------------------------------------------------------------

GuiCreate("Installer", 600, 450)
GUISetState ()
Local $liste, $sItems, $aItems, $ListOption, $ret, $listmodel

;-------combo-------------------------------------------------------

GuiCtrlCreateLabel("Select the machine model :", 10, 25)
If @error Then 
    MsgBox(4096, "", "Error ! Check for INI file.")
Else
$combo = GUICtrlCreateCombo("", 10, 45, 580, 100)
    For $i = 1 To $model[0][0]
       GUICtrlSetData($combo, $model[$i][0])
    Next
EndIf

;--------liste------------------------------------------------------

GuiCtrlCreateLabel("Select the applications to install (press CTRL to select multiple applications) :", 10, 130)
If @error Then 
    MsgBox(4096, "", "Error ! Check for INI file.")
Else
    $liste = GuiCtrlCreateList("", 10, 150, 580, 250, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))
    For $i = 1 To $oneshot[0][0]
       GUICtrlSetData($liste, $oneshot[$i][0])
    Next
EndIf

;-------------------------------------------------------------------

$bouton_Activate = GuiCtrlCreateButton("OK", 100, 405, 100, 30)
$bouton_Cancel = GuiCtrlCreateButton("Cancel", 400, 405, 100, 30)
GUICtrlSetState ( $bouton_Activate, $GUI_ENABLE)

GUICtrlSetOnEvent($bouton_Activate, "Activate")
GUICtrlSetOnEvent($bouton_Cancel, "Cancel")

;-------------------------------------------------------------------
;--------Les fonctions----------------------------------------------
;-------------------------------------------------------------------

Func Activate()
    $aItems = _GUICtrlListBox_GetSelItemsText ($liste)
    For $iI = 1 To $aItems[0]
        $sItems &= @LF & $aItems[$iI]
    Next
    SelectionMod(GUICtrlRead ($combo))
EndFunc

Func Cancel()
    Exit
EndFunc

Func Action()
    $var = IniRead("lance.ini", "Models", $listmodel, "NotFound")
    $varpc = IniReadSection("lance.ini", $var)
    If @error Then 
        MsgBox(4096, "Caution", "Error occurred, probably no INI file.")
        Else
        For $i = 1 To $varpc[0][0]
            MsgBox(4096, $varpc[$i][0], $varpc[$i][1]); REPLACE MSGBOX WITH RUNWAIT
        Next
        $aItems = _GUICtrlListBox_GetSelItemsText ($liste)
        For $i = 1 To $aItems[0]
            For $x = 1 To $oneshot[0][0]
                If $aItems[$i] = $oneshot[$x][0] Then MsgBox(4096, $oneshot[$x][0], $oneshot[$x][1]); REPLACE MSGBOX WITH RUNWAIT
            Next
        Next
    EndIf
MsgBox(4096, "Fin", "Fin")
EndFunc

Func SelectionMod($ListOption)
    $var = IniRead("lance.ini", "Models", $ListOption, "NotFound")
    $varpc = IniReadSection("lance.ini", $var)
    If @error Then 
        MsgBox(4096, "", "Error occurred, probably no INI file.")
        Else
        For $i = 1 To $varpc[0][0]
            $ret=$ret & @CRLF & $varpc[$i][0]
        Next
    EndIf
    $listmodel=$ListOption
    $tous = $ret & $sItems
    $reponse = MsgBox (4, "Confirmation", "Are you sure you want to install : " & @CRLF & $tous & @CRLF & @CRLF & "?")
    For $iI = 1 To $tous
        MsgBox(4096, "Tous", $aItems[$iI])
    Next
    
    If $reponse=7 then WinClose ("Confirmation")
    If $reponse=6 then Action()
EndFunc

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    Wend

Just replace Msgbox by Runwait in the ligns "REPLACE MSGBOX WITH RUNWAIT".

I hope that this will be useful to someone.

Bye.

Franckb.

Share this post


Link to post
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
Sign in to follow this  
Followers 0