no4ndth3n Posted February 12, 2007 Share Posted February 12, 2007 I am trying to read a setting from an INI file. If I output the INI information BEFORE I update the LISTVIEW control, then it reads the information fine. However, if I update the LISTVIEW control with the PC list first, the INI information will not display. It outputs blanks. I have a file C:\pcs.txt that contains a list of PC's I have an ini file that contains [PSEXEC] exe=psexec.exe folder=@scriptDir [Java 1.4.2_12] command=C:\Documents and Settings\eito.ARROWHEADCU\Desktop\j2re-1_4_2_12-windows-i586-p.exe arguments=/s /v" /qn IEXPLORE=0 MOZILLA=0 JAVAUPDATE=0 WEBSTARTICON=0 AgreeToLicense=1 EULA=1" Now, if I display the results from INIRead before I select the input file, I can display the INI values, but if I upload the file at any time, the values are overwritten with blanks. expandcollapse popup#include <GUIConstants.au3> #include <GuiListView.au3> #include <GuiList.au3> #include <GuiStatusBar.au3> Opt("GuiOnEventMode",1) FileInstall("C:\psexec.exe",@scriptDir & "\psexec.exe") ;$PSEXEC = "psexec.exe" $PSEXEC = IniRead("config.ini","PSEXEC","exe","psexec.exe") ;$PSEXEC_PATH = "C:\" $PSEXEC_PATH = Execute(IniRead("config.ini","PSEXEC","folder","")) ;MsgBox(0,'path',$PSEXEC) ;MsgBox(0,'path',$PSEXEC_PATH) $WIDTH = 640 $HEIGHT = 480 $MAIN_GUI = GUICreate("ACU Remote Installer",$WIDTH,$HEIGHT,-1,-1) $LISTVIEW = GUICtrlCreateListView("PC|Status|Exit Code",5,15,$WIDTH-400,$HEIGHT-50) _GUICtrlListViewSetColumnWidth($LISTVIEW,0,75) _GUICtrlListViewSetColumnWidth($LISTVIEW,1,75) _GUICtrlListViewSetColumnWidth($LISTVIEW,2,75) $INPUT_FILE_LABEL = GUICtrlCreateLabel("PC List:",260,25,50,20) $INPUT_FILE_INPUT = GUICtrlCreateInput("",300,22,300,20) $INPUT_FILE_BUTTON = GUICtrlCreateButton("...",605,22,30,20) $PACKAGE_GROUP = GUICtrlCreateGroup("Software",270,100,350,150) $PACKAGE_LIST = GUICtrlCreateList("",295,125,300,100,$LBS_SORT) updatePackageList() Global $STATUS_BAR_EDGE[3] = [300,400,-1] Global $STATUS_BAR_TEXT[3] = ["1","","Install ratio"] $STATUS_BAR = _GUICtrlStatusBarCreate($MAIN_GUI,$STATUS_BAR_EDGE,$STATUS_BAR_TEXT) $PB_1 = _GUICtrlStatusBarCreateProgress($STATUS_BAR,0,$PBS_SMOOTH) $RUN_BUTTON = GUICtrlCreateButton("Install",300,300,100,20) Global $PACKAGE_TO_INSTALL ;= _GUICtrlListGetText($PACKAGE_LIST,_GUICtrlListSelectedIndex($PACKAGE_LIST)) Global $exePath ;= IniRead("config.ini",$PACKAGE_TO_INSTALL,"command","") Global $args ;= IniRead("config.ini",$PACKAGE_TO_INSTALL,"arguments","") GUISetOnEvent($GUI_EVENT_CLOSE,"close") GUICtrlSetOnEvent($INPUT_FILE_BUTTON,"getFile") GUICtrlSetOnEvent($RUN_BUTTON,"go") GUICtrlSetOnEvent($PACKAGE_LIST,"updateList") GUISetState() while 1 Sleep(10) WEnd Func close() Exit EndFunc Func getFile() Local $fileName = FileOpenDialog("Select input file",@Desktopdir,"All files (*.*)") If $fileName <> "" Then GUICtrlSetData($INPUT_FILE_INPUT,$fileName) updateListView() EndIf EndFunc Func updateListView() local $infile = FileOpen(GUICtrlRead($INPUT_FILE_INPUT),0) while 1 $line = FileReadLine($infile) If @error = -1 Then ExitLoop GUICtrlCreateListViewItem($line & "|" & "pending|",$LISTVIEW) WEnd FileClose($infile) EndFunc Func go() GUICtrlSetState($RUN_BUTTON,$GUI_DISABLE) Local $PACKAGE_TO_INSTALL = _GUICtrlListGetText($PACKAGE_LIST,_GUICtrlListSelectedIndex($PACKAGE_LIST)) Local $pcCount = _GUICtrlListViewGetItemCount($LISTVIEW) MsgBox(0,'',$PACKAGE_TO_INSTALL) MsgBox(0,$exePath,$args) MsgBox(0,'',@comspec & ' /c ' & $PSEXEC & ' \\pc1707 -c "' & $exePath & '" ' & $args) For $i=0 to $pcCount-1 $pc = _GUICtrlListViewGetItemText($LISTVIEW,$i,0) _GUICtrlListViewSetItemText($LISTVIEW,$i,1,"Installing...") ;WORKS $1 = RunWait(@comspec & ' /c ' & $PSEXEC & ' \\' & $pc & ' -c "C:\documents and settings\eito.ARROWHEADCU\Desktop\j2re-1_4_2_12-windows-i586-p.exe" /s /v" /qn IEXPLORE=0 MOZILLA=0 JAVAUPDATE=0 WEBSTARTICON=0 AgreeToLicense=1 EULA=1"',$PSEXEC_PATH,@SW_HIDE) ;$1 = RunWait(@comspec & ' /c ' & $PSEXEC & ' \\' & $pc & ' -c "' & $exePath & '" ' & $args,$PSEXEC_PATH,@SW_HIDE) MsgBox(0,'',@comspec & ' /c ' & $PSEXEC & ' \\' & $pc & ' -c "' & $exePath & '" ' & $args) ;MsgBox(0,'',@comspec & ' /c "C:\Documents and Settings\eito.ARROWHEADCU\Desktop\Scripting\pstools\psexec.exe" \\' & $pc & ' -c "C:\documents and settings\eito.ARROWHEADCU\Desktop\j2re-1_4_2_12-windows-i586-p.exe" /s /v" /qn IEXPLORE=0 MOZILLA=0 JAVAUPDATE=0 WEBSTARTICON=0 AgreeToLicense=1 EULA=1"') ;MsgBox(0,'Exit Code',$1) _GUICtrlListViewSetItemText($LISTVIEW,$i,1,"Finished") if $1 <> 0 Then _GUICtrlListViewSetItemText($LISTVIEW,$i,2,"Error") Else _GUICtrlListViewSetItemText($LISTVIEW,$i,2,$1) EndIf Next GUICtrlSetState($RUN_BUTTON,$GUI_ENABLE) EndFunc Func updatePackageList() Dim $packages = IniReadSectionNames("config.ini") For $i=1 to $packages[0] If $packages[$i] = "PSEXEC" Then ; nothing Else GUICtrlSetData($PACKAGE_LIST,$packages[$i] & "|") EndIf Next EndFunc Func updateList() ;udpate every click $PACKAGE_TO_INSTALL = _GUICtrlListGetText($PACKAGE_LIST,_GUICtrlListSelectedIndex($PACKAGE_LIST)) $exePath = IniRead("config.ini",$PACKAGE_TO_INSTALL,"command","") $args = IniRead("config.ini",$PACKAGE_TO_INSTALL,"arguments","") MsgBox(0,'Update:',$PACKAGE_TO_INSTALL & @CRLF & $exePath & @CRLF & $args) EndFunc #cs psexec \\computer -c "C:\Path to Java\File" /s /v" /qn IEXPLORE=0 MOZILLA=0 JAVAUPDATE=0 WEBSTARTICON=0 AgreeToLicense=1 EULA=1" #ce Link to comment Share on other sites More sharing options...
Valik Posted February 12, 2007 Share Posted February 12, 2007 You don't specify an explicit path to the INI file so it looks in the working directory. FileOpenDialog() changes the working directory, ergo, you're looking for an INI file in a completely different location than you think. The moral of the story: Always specify the full path to your files. Link to comment Share on other sites More sharing options...
no4ndth3n Posted February 12, 2007 Author Share Posted February 12, 2007 You don't specify an explicit path to the INI file so it looks in the working directory. FileOpenDialog() changes the working directory, ergo, you're looking for an INI file in a completely different location than you think.The moral of the story: Always specify the full path to your files.Ah yes! Thank you very much. That would have taken me quite a while to figure out. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now