ich will auch ein T-Shirt oder wird es für nee Webseite gesucht ?
Beiträge von Dietmar
-
-
ja das handle ist ja $form1 von daher ist mir das schon klar, ich dachte man würde sonst nee Gruppe machen und die angeben oder den $tab als handle.
Aber das geht ja nicht Problem hatte ich also schon richtig gedeutet, mich nur gegen [die/meine] Lösung gesträubt -
So was in etwa hatte ich mir schon gedacht, das meinte ich mit GUI hide/show,
aber das es mit den anderen Dialogen(Combobox/Inputbox) so klappt, dachte ich es gäbe noch eine "simplere Lösung".
Bei den anderen Sachen wird ja auch das Basisfenster nicht benannt. -
Hmm ist das so verquer gefragt, oder ist der Wunsch es so zu benutzen noch nie geäußert worden.
Oder mach ich ich es komplett falsch?Hintergrund ich möchte halt ein Tool basteln für WOL mit noch ein paar Extras und
auf der Einstellungen Seite kann man Clients hinzufügen/löschen.
Da dachte ich es sieht mit den tabs ganz hübsch aus, ist so aber nicht wirklich funktioniell, wie lösen andere so ein Problem? -
Ich meine es in abgewandelter Form schon mal gefragt zu haben, ist aber irgendwie untergegangen...
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <GuiIPAddress.au3>#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 378, 354, 377, 548)
$Tabs = GUICtrlCreateTab(0, 0, 377, 25);Tab 1 Allgemein
[/autoit] [autoit][/autoit] [autoit]
$Allgemein = GUICtrlCreateTabItem("Allgemein")
$Combo1 = GUICtrlCreateCombo("Combo1", 48, 48, 185, 25);Tab 2 Einstellunegn
[/autoit] [autoit][/autoit] [autoit]
$Einstellungen = GUICtrlCreateTabItem("Einstellungen")
$IP = GUICtrlCreateLabel("IP-Adresse", 48, 200, 55, 17)
$IPAddress1 = _GUICtrlIpAddress_Create($form1, 104, 200, 129, 17)
_GUICtrlIpAddress_Set($IPAddress1, "192.168.223.100")
$IPAddress2 = _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17)
_GUICtrlIpAddress_Set($IPAddress2, "192.168.223.255")
$Input1 = GUICtrlCreateInput("Input1", 48, 128, 185, 21)
$Input2 = GUICtrlCreateInput("Input2", 48, 160, 185, 21)
$Broadcast = GUICtrlCreateLabel("Broadcast", 48, 232, 52, 17)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitCase $Tabs
[/autoit]
EndSwitch
WEndWas muss man hier _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17) tun,
damit der IP Dialog nur auf der 2. Seite zu sehen ist $form1 ist ja alles?
Und bei der Angabe von $Einstellungen mault autoit den 1. Parameter anGruß Dietmar
EDIT: Eine Möglichkeit wäre vermutlich mit GUI(show/hide), fühlt sich aber irgendwie getrickst an, oder?
-
Brauchst Du das als Funktion es wird ja eeh ein array zurückgeliefert...
$level= 1
$read_ini = IniReadSection("level.ini",$level)
msgbox(0,"",$read_ini[1][1])
was passiert hier ?wird an der richtigen Stelle nach der ini gesucht, @scriptdir wäre mitunter notwendig...
-
bzw mit AutoitWindowInfodie genauen Infos zu dem Control holen und dann kann man es auch gezielt befragen.
[autoit]GUICtrlSetState($jawerdenn,$GUI_CHECKED)
[/autoit][autoit][/autoit][autoit]
If GUICtrlRead($jawerdenn) = 1 Then......$GUI_ENABLE Control will be enabled.
[/autoit]
$GUI_DISABLE Control will be greyed out. -
Fummel hier gerade auch schon mit so einem orca Ersatz rum, schön wäre halt ein MST Tool was nicht installiert werden muss.
Hat jemand die msidb.exe ich installier doch nicht dafür ohne Ende Dateien dann kann ich ja gleich VB etc nehmen -
Kann ich ganz sicher mit jein beantworten
Früher habe ich das Setup mit dem Befehl Run($setup & "/a") entpackt
dann mit File2array o.ä eine Liste mit dem Dateinamen,Version,Datum1,Datum2,Größe erstellt
Da die entpackte Strucktur (/a ist quasi ein dryrun ohne Registry etc nur entpacken ) eine wiederzuerkennede Struktur hatte
habe ich nach einem reellen Setup auch alle Dateien mit den passendenKriterien wiederfinden müssen.Nun habe ich ein Problem da sich der Umfang ändert, es wird nicht mehr maximal installiert somit würden Dateien bei der Überprüfung fehlen. Was ja bedingt richtig ist, da in dem Umfang (ohne Serverkomponenten) halt gewisse Dateien fehlen.
Nun muss ich irgendwie an eine Liste der Dateien kommen, halt in Abhängigkeit der MST Dateien-
MST ist für mich neu installieren kann ich damit aber mir fehlt das Gegenstück zum prüfen bzw. zum Buchführen was man da auffinden müsste.
-
Ich habe folgendes Problem, ich habe bis dato ein setup (Installshield) mit setup /a entpackt um an den Inhalt zu kommen.
Bis vor kurzem war der Installationsumfang maximal, so konnte man gut überprüfen ob alle Datein mit der passenden Version, etc angekommen waren.
Nun stellen wir das Setup vom Default her auf Minimal ebenso gibt es MST Dateien mit denen wir installieren können.
Nun suche ich einen Möglichkeit wie ich das Setup mit dem benötigten Umfang entpacken kann.Programm.msi TRANSFORMS=Nserver.MST /qb- installiert hat Basis + den Server
Die Frage ist ob es überhaupt geht und nicht grundsätzlich der komplette Umfang mit /a entpackt wird
-
[autoit]
dir /S /T:A /B >> Datei
[/autoit] -
das hätte ich auch geschrieben Aber wo ich es gerade sehe
If FileExists ( @ScriptDir&"\lieder.ini" ) Then
If GUICtrlRead ( $Radio1 ) = $GUI_CHECKED Then
so etwas wird bei Tidy gelegentlich beanstandet, ich ändere das dann so dann ist er ruhig, ist das ok oder gibt es da eine andere Lösung.If FileExists ( @ScriptDir&"\lieder.ini" ) Then
Sleep(5)
If GUICtrlRead ( $Radio1 ) = $GUI_CHECKED Then -
Besten Dank aber das ist nicht ganz das gesuchte, ein Aufruf für die Standardbenutzersuche wäre evtl. besser,
da kann der User über Pfade den richigen aussuchen, in den meisten Fällen mit bei internen Mailserver hat man auch ine Domäne.
Oder deser Dialog weiß jemand wie man ihn startet. -
Nabend gibr es eine Funktion die analog zum fileopen Dialog eine Auswahl der User bringt (oder AD Such Dialog)
Ich möchte über diesen Benutzer für Emailbenachrichtigung auswählen können. Eine UDF wäre auch in Ordnung.
Irgendwer hatte doch für Ad etwas im Anhang, aber nicht alle haben eine Domäne
Gruß Dietmar -
Zitat
Ehm zu ControlGetText: Es gibt immer etwas zurück, solange man damit keine Java IDE überprüfen will..
Wenn man die ControlID kennt, das was meine Kollegen programmieren hat leider selten einen Bezeichner aber immer eine ID,
die sich aber ändert wenn in das Projekt etwas eingefügt wird.
Das wäre in VB so und da könnte man nix dran machen, ich könnte kot...,
naja so merkt man halt immer erst nach dem ersten Aufprall das sich die ID geändert hat -
Zitat
nur die MSiExec.exe im TaskMgr.exe
Wen Du Dir alle User anzeigen lässt siehst Du das msiexec multiple Male während des Setups läuft.
aber runwait passt schon
-
Hat keiner eine Idee, einen Tip was man beachten sollte, damit das ganze noch etwas performant läuft?
-
ja so bekomme ich alle Dateien.
Ich hatte allerdings bewusst D statt -D genommen um die den Pfadnamen schon einmal zu haben für Trenner zwischen den Dateien.
Und um eine Liste für die äußere Schleife zu haben. der Pfad wird ja auch im Progress angezeigt.Die dateileeren Verzeichnisse sind auch nicht so problematisch, da kann ich mit leben.
gibt es eine bessere Lösung um an die Infos je Datei zu kommen.
Wirkt für mich ein bissel doppelt gemoppeltDer Vorteil bei -D es ist schneller müsste dann nur ein bissel umbauen, allerdings wie lange gibt es dir noch
Aber die file2array Geschichte von Bugfix finde ich schon etwas schwer überschaubar, für michErgebnis:
XXTT.jpg: Version - 1583 ist identisch
XXXX.jpg: Version - 1426 ist identisch
##### C:\WINDOWS\system
! Fehler: msxml4.dll-4.20.9818.0 nicht vorgefunden.
! Fehler: msxml4a.dll-4.10.9404.0 nicht vorgefunden.
! Fehler: msxml4r.dll-4.10.9404.0 nicht vorgefunden.
##### C:\WINDOWS\system32
craxdrt.dll: Version - 8.5.0.473 ist identisch
craxdrt_res_de.dll: Version - 8.5.0.217 ist identischsieht dann nach einem Vergleich dann so aus. Früher wurde in der Schleife wo die Version abgefragt wird auch die Version der Zieldatei nach Installation geprüft.
Jetzt will ich das aber so zerrupfen das ich mir die Referenzdatei erstelle entweder beim Setup und anschliessendem Vergleich.
Oder nur Datei erzeugen und am anderen PC gegen ein setup /a Verzeichnis prüfen bzw gegen die Installation.
Halt ein Script mit Parametern so das es mit Proress laufen kann aber auch unbeaufsichtigt zur Dateigenerierung in den Setuperzeugungsprogress eingebunden werden kann.Hier die Schleife wie es schon produktiv lief, ich will es nun um ein paar Werte erweitern
[autoit]
[/autoit][autoit][/autoit][autoit]
Func compare_dir()
If Not FileExists("c:\msi-setup") Then
MsgBox(0,"Fehler","MSI File wurde nicht entpackt.")
my_exit()
Else
FileDelete("c:\test.file")
RunWait(@ComSpec & " /c dir c:\msi-setup /A:D /B /s >> c:\test.file","",@SW_HIDE)
FileWriteLine($log,"########################################################################")
FileWriteLine($log,"# Vergleich der Dateien aus dem MSI-File und inststallierten Dateien. #")
FileWriteLine($log,"# #")
FileWriteLine($log,"# Wenn keine Version ermittelt werden kann, wird die Größe verglichen. #")
FileWriteLine($log,"#----------------------------------------------------------------------#")_FileReadToArray("c:\test.file", $file_dir)
[/autoit][autoit][/autoit][autoit]
_ArraySort($file_dir)For $j=1 to UBound($file_dir,1)-1
[/autoit][autoit][/autoit][autoit]
$dir=_StringSplit($file_dir[$j], '\', 1)
If $dir[2]="common" then $search_dir=StringReplace($file_dir[$j],$msi_dir & "common",@CommonFilesDir)
If $dir[2]="program files" then $search_dir=StringReplace($file_dir[$j],$msi_dir & "program files",@ProgramFilesDir)
If $dir[2]="system" then $search_dir=StringReplace($file_dir[$j],$msi_dir & "system",@WindowsDir & "\system")
If $dir[2]="system32" then $search_dir=StringReplace($file_dir[$j],$msi_dir & "system32",@WindowsDir & "\system32")
If $dir[2]="windows" then $search_dir=StringReplace($file_dir[$j],$msi_dir & "windows",@WindowsDir)
FileWriteLine($log,"##### " & $search_dir)
$FileList=_FileListToArray($file_dir[$j],"*",1)
If Not @Error=1 Or @error=4 Then ProgressOn (StringTrimLeft($file_dir[$j],12), "Bitte haben Sie etwas Geduld.....", "")
; MsgBox (0,"","No Files\Folders Found.")
; Exit
; EndIf
[/autoit][autoit][/autoit][autoit]
_ArraySort($FileList)For $i=1 to UBound($FileList,1)-1
[/autoit]
If StringLeft($file_dir[$j],28) <> "c:\msi-setup\System32\Redist" Then
If FileExists($search_dir & "\" & $FileList[$i]) Then
$a=FileGetVersion($file_dir[$j] & "\" & $FileList[$i])
If $a="0.0.0.0" Then $a=FileGetSize($file_dir[$j] & "\" & $FileList[$i])
$b=FileGetVersion($search_dir & "\" & $FileList[$i])
if $b="0.0.0.0" Then $b=FileGetSize($search_dir & "\" & $FileList[$i])
If $a=$b Then
FileWriteLine($log,$FileList[$i] & ": Version - " & $a & " ist identisch")
;MsgBox(0,"OK",$FileList[$i] & ": Version - " & $a & " ist identisch")
Else
FileWriteLine($log,"! Fehler: " & $FileList[$i] & " -Versionskonflikt- " & $a & " wird erwartet,Version " & $b & " vorgefunden.")
;MsgBox(0,"Fehler:",$FileList[$i] & " -Versionskonflikt- " & $a & " wird erwartet,Version " & $b & " vorgefunden.")
EndIf
Else
FileWriteLine($log,"! Fehler: " & $FileList[$i] & "-" & FileGetVersion($file_dir[$j] & "\" & $FileList[$i]) & " nicht vorgefunden.")
EndIf
$percent=UBound($fileList,1)/100
ProgressSet( $i/$percent , $i & " von " & UBound($FileList,1)-1 & " Dateien verglichen")
Else
EndIf
Next
ProgressOff()
Next
FileWriteLine($log,"########################################################################")
cleanup()
EndIf
EndFuncDa da nun noch ein paar werte zukommen überlege ich wie ich nun möglichst fix (in der Ausführung) die Inhalte vergleiche.
Referenzliste in mehrdim. Array einlesen und dann Datei für Datei einlesen und dabei Version, etc gegen die Werte aus der Arrayzeile prüfen.
Wie bekomm ich die Name,Version,Date1,Date2,Size in einen Datensatz damit ich die einzeln wieder nutzen kann.
Oder gibt es noch bessere Vorschläge um ein solch Log erzeugen, ich möchte kein file diff von 2 Dateien da auch Registry etc im finalen Log ausgewertet wird... -
Spoiler anzeigen
[autoit]#Include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <Array.au3>$log= @TempDir & "\test_dummy.txt"
[/autoit] [autoit][/autoit] [autoit]get_file_list()
[/autoit] [autoit][/autoit] [autoit]Func get_file_list()
[/autoit] [autoit][/autoit] [autoit]
Dim $file_dir=""
If Not FileExists("c:\msi-setup") Then
MsgBox(0,"Fehler","MSI File wurde nicht entpackt.")
Exit
Else
If FileExists("c:\test.file") Then FileDelete("c:\test.file")
RunWait(@ComSpec & " /c dir c:\msi-setup /A:D /B /s >> c:\test.file","",@SW_HIDE)_FileReadToArray("c:\test.file", $file_dir)
[/autoit] [autoit][/autoit] [autoit]
_ArraySort($file_dir)For $j=1 to UBound($file_dir,1)-1
[/autoit] [autoit][/autoit] [autoit]
If Not FileExists($file_dir[$j] & "\*\") Then FileWriteLine($log,"##### " & $file_dir[$j]) ; ich möchte hier nur die Ordner festhalten, welche keine Unterordner und nur Dateien beinhalten
$FileList=_FileListToArray($file_dir[$j],"*",1)
;~ If Not @Error=1 Or @error=4 Then ProgressOn (StringTrimLeft($file_dir[$j],12), "Bitte haben Sie etwas Geduld.....", "")_ArraySort($FileList)
[/autoit] [autoit][/autoit] [autoit]For $i=1 to UBound($FileList,1)-1
[/autoit]
If StringLeft($file_dir[$j],28) <> "c:\msi-setup\System32\Redist" Then
If FileExists($file_dir[$j] & "\" & $FileList[$i]) Then
$a=$file_dir[$j] & "\" & $FileList[$i]
$a0=FileGetSize($a)
$a1=FileGetVersion($a)
$a2=FileGetSize($a)
$a3=FileGetTime($a)
$a4=FileGetTime($a,1)
;~ FileWriteLine($log,$FileList[$i] & "|" & $a1)
FileWriteLine($log,$FileList[$i] & "|" & $a0 & "|" & $a1 & "|" & $a2 & "|" & $a3[2] & "." & $a3[1] & "." & $a3[0] & "-" & $a3[3] & ":" & $a3[4] & "|" & $a4[2] & "." & $a4[1] & "." & $a4[0] & "-" & $a4[3] & ":" & $a4[4])
Else
EndIf
;~ $percent=UBound($fileList,1)/100
;~ ProgressSet( $i/$percent , $i & " von " & UBound($FileList,1)-1 & " Dateien gefunden")
Else
EndIf
Next
;~ ProgressOff()
Next
EndIf
EndFunc]Hallo ich habe ein / zwei Fragen, kann man das Script noch optimieren, es benötigt so ca. ~20 sec. bei ~4000 Dateien.
Oder ist das OK auf einem Notebook (mit 5400 Umdrehungen)
Wie kann ich es erreichen das nur der Ordnername der Dateinamen beinhaltet aufgeschrieben wird?
Beispiel:
####msi-setup\1
####msi-setup\1\2
####msi-setup\1\2\3\datei*.* ich möchte nur diesen Ordnernamen haben für die Schleife / Liste -
Putty von der Kommandozeile login etc ...
Möchte man mit Putty einen Befehl auf einer entfernten Maschine ausführen geht das so:
\PfadZu\putty.exe user@host.dom -i “\PfadZum\priv_key.ppk” -m \PfadZumBefehlsTextFile