Ticket #678: Norton95.au3

File Norton95.au3, 11.0 KB (added by dutCh, 15 years ago)

shows the enforced work with confined arrays. BAD!!

Line 
1#cs
2
3        Norton Commander 95/NT Install + Deinstall
4        ------------------------------------------
5
6#ce
7
8#include <Constants.au3>
9#include <File.au3>
10
11$sCmdLine = "C:\Drivers\Norton5\Setup32\SETUP.EXE"  ;   V.4.20.6  01.10.96  42.572 Byte
12$sWorkDir = "C:\Drivers\Norton5\Setup32"
13$sPath = "D:\Patch\NC5"  ; @ProgramFilesDir & "\Norton Commander" --- MUSS Wert enthalten!
14$sEditor = "D:\Programme\UltraEdit\Uedit32.exe"  ;externer Editor
15$sName = "dutCh"
16$sOrg = "ACM Inc."
17
18$iCmdDelay = 500  ;Sleep() in Loop --- z.B. Ablaufverfolgung
19$iCntDlg = 2  ;Install-Dialogs --- Dialoge maximal 4000 Zeichen!
20$iCntDel = 1  ;Deinstall-Dialogs
21
22Dim $aDlg[100][8], $aDel[100][8]  ;100 Lines x 8 Commands pro Dialog
23
24;================================ Installation ============================================================
25;
26; r = _RunLog(3)  w = WinWaitActive(3)  c = ControlCommand(5)  k = ControlClick(7)  s = Send(2)  1 = extra1
27;
28;==========================================================================================================
29
30Dim $aDlg1[100][1 + 7] = [ _
31        ["r",  $sCmdLine, $sWorkDir, "0", "", "", "", ""], _  ;start install
32        ["w",  "Norton Commander", "Willkommen bei Symantec Setup", "", "", "", "", ""], _
33        ["c",  "Norton", "", "Edit1", "EditPaste", $sName, "", ""], _
34        ["s",  "{TAB}", "", "", "", "", "", ""], _
35        ["s",  "+{END}", "", "", "", "", "", ""], _
36        ["c",  "Norton", "", "Edit2", "EditPaste", $sOrg, "", ""], _
37        ["s",  "!w", "", "", "", "", "", ""], _
38        ["s",  "!w", "", "", "", "", "", ""], _
39        ["s",  "!a", "", "", "", "", "", ""], _
40        ["s",  "+{END}", "", "", "", "", "", ""], _
41        ["c",  "Norton", "Speicherort des Programms", "Edit1", "EditPaste", $sPath, "", ""], _
42        ["s",  "!w", "", "", "", "", "", ""], _
43        ["s",  "!w", "", "", "", "", "", ""], _
44        ["c",  "", "&NC starten", "Button2", "Check", "", "", ""], _
45        ["s",  "!w", "", "", "", "", "", ""], _
46        ["s",  "!w", "", "", "", "", "", ""], _
47        ["w",  "Norton", "StandardCare Support", "", "", "", "", ""], _  ;installiert...
48        ["s",  "!w", "", "", "", "", "", ""], _
49        ["s",  "{SPACE}", "", "", "", "", "", ""], _
50        ["s",  "{SPACE}", "", "", "", "", "", ""], _
51        ["1",  "", "", "", "", "", "", ""], _  ;delete Temp Files
52        ["",  "", "", "", "", "", "", ""]]  ;letzte Zeile special
53
54Dim $aDlg2[100][1 + 7] = [ _
55        ["r",  $sPath & "\NC.EXE", $sPath, "0", "", "", "", ""], _  ;start NC
56        ["w",  "NC Rechts", "1-Hilfe", "", "", "", "", ""], _
57        ["s",  "{F9}", "", "", "", "", "", ""], _
58        ["s",  "b", "", "", "", "", "", ""], _
59        ["s",  "o", "", "", "", "", "", ""], _
60        ["w",  "Konfigurationsoptionen", "Allg. Einstell.", "3", "", "", "", ""], _
61        ["c",  "", "&Kopieren",                          "Button2",  "UnCheck", "", "", ""], _  ;Bestätigungen
62        ["c",  "", "&Bewegen",                           "Button3",  "UnCheck", "", "", ""], _
63        ["c",  "", "&Löschen",                           "Button4",  "Check", "", "", ""], _
64        ["c",  "", "B&eenden",                           "Button5",  "UnCheck", "", "", ""], _
65        ["k",  "", "&Integriert",                        "Button7",  "", "", "", ""], _  ;Editor 1
66        ["k",  "", "E&xtern",                            "Button8",  "", "", "", ""], _  ;Editor 2
67        ["c",  "", "&Durch Kennwort schützen",           "Button10", "UnCheck", "", "", ""], _  ;Komprimierung
68        ["c",  "", "Ei&nrichtung automatisch speichern", "Button12", "Check", "", "", ""], _
69        ["c",  "", "Editor", "Edit1", "EditPaste", $sEditor, "", ""], _
70        ["s",  "^{TAB}", "", "", "", "", "", ""], _
71        ["w",  "Konfigurationsoptionen", "Bildschirm", "3", "", "", "", ""], _
72        ["c",  "", "&Werkzeugleiste",                 "Button2",  "Check", "", "", ""], _
73        ["c",  "", "&Statusleiste",                   "Button3",  "Check", "", "", ""], _
74        ["c",  "", "&Fensterstatusleiste",            "Button4",  "Check", "", "", ""], _
75        ["c",  "", "&DOS-Befehlszeile",               "Button5",  "Check", "", "", ""], _
76        ["c",  "", "&Registerleiste",                 "Button6",  "Check", "", "", ""], _
77        ["c",  "", "Fens&tertitelleiste",             "Button7",  "Check", "", "", ""], _
78        ["c",  "", "Fun&ktionstastenleiste",          "Button8",  "Check", "", "", ""], _
79        ["c",  "", "&Uhr",                            "Button9",  "Check", "", "", ""], _
80        ["c",  "", "&Versteckte Dateien anzeigen",    "Button10", "Check", "", "", ""], _
81        ["c",  "", "Ver&zeichnisse auswählen",        "Button11", "Check", "", "", ""], _
82        ["c",  "", "&Original Groß-/Kleinschreibung", "Button12", "Check", "", "", ""], _
83        ["c",  "", "&Einfügen bewegt nach unten",     "Button13", "Check", "", "", ""], _
84        ["c",  "", "&Auto-Verzeichniswechsel",        "Button14", "Check", "", "", ""], _
85        ["c",  "", "Auto&matische Menüs",             "Button15", "UnCheck", "", "", ""], _
86        ["c",  "", "Akt&iv",                          "Button18", "UnCheck", "", "", ""], _  ;Bildschirmschoner
87        ["s",  "^{TAB 2}", "", "", "", "", "", ""], _
88        ["w",  "Konfigurationsoptionen", "Kompatibilität", "3",  "", "", "", ""], _
89        ["k",  "", "A&nfangsbuchstabe (Umgeht DOS-Eingabeaufforderung)", "Button4",  "", "", "", ""], _  ;Schnellsuche in Fenstern 3
90        ["k",  "", "<&ALT>  (Setzt Windows-Standard außer Kraft)",       "Button3",  "", "", "", ""], _  ;Schnellsuche in Fenstern 2
91        ["k",  "", "<&STRG-ALT>",                                        "Button2",  "", "", "", ""], _  ;Schnellsuche in Fenstern 1
92        ["k",  "", "&Rechtsklicken wählt Dateien aus",                   "Button5",  "", "", "", ""], _  ;Maus 1
93        ["k",  "", "R&echtsklicken zeigt Menü an",                       "Button6",  "", "", "", ""], _  ;Maus 2
94        ["c",  "", "&In den Papierkorb verschieben",                     "Button7",  "Check", "", "", ""], _  ;Löschen
95        ["s",  "{ENTER}", "", "", "", "", "", ""], _
96        ["s",  "^q", "", "", "", "", "", ""], _  ;kick Qickview
97        ["s",  "{SPACE}", "", "", "", "", "", ""], _
98        ["s",  "{ENTER}", "", "", "", "", "", ""], _
99        ["s",  "^q", "", "", "", "", "", ""], _
100        ["s",  "{F10}", "", "", "", "", "", ""], _
101        ["",  "", "", "", "", "", "", ""]]  ;letzte Zeile special
102
103;==================================================== Deinstallation ====================================================
104;
105; dm = DirMove(2)  fm = FileMove(2)  dr = DirRemove(1)  fd = FileDelete(1) rk = RegDelete(1)  rv = RegDelete(2) key/value
106;
107;========================================================================================================================
108
109Dim $aDel1[100][1 + 2] = [ _
110        ["dr",  $sPath, ""], _
111        ["dr",  @ProgramFilesDir & "\Norton Commander", ""], _  ;Default-Vorgabe, mit $sPath überschrieben
112        ["dr",  @ProgramsCommonDir & "\Norton Commander", ""], _  ;Startmenü
113        ["fd",  @DesktopDir & "\Norton Commander.LNK", ""], _
114        ["fd",  @WindowsDir & "\siwini.ini", ""], _
115        ["fd",  @WindowsDir & "\~SYMSHEL.EXE", ""], _
116        ["fd",  @WindowsDir & "\~SYMINST.EXE", ""], _
117        ["fd",  @WindowsDir & "\~SYMINST.PIF", ""], _
118        ["fd",  @WindowsDir & "\_SYMINST.BAT", ""], _
119        ["fd",  @WindowsDir & "\WININIT.SIW", ""], _
120        ["fm",  @WindowsDir & "\WININIT.INI", @WindowsDir & "\WININIT.BAK"], _
121        ["fd",  @SystemDir & "\Norton Commander-Logo-Animation.Scr", ""], _
122        ["fd",  @SystemDir & "\Norton Commander Sternenhimmel.Scr", ""], _
123        ["fd",  @SystemDir & "\SERIAL.SYS", ""], _
124        ["fd",  @SystemDir & "\PARPORT.SYS", ""], _
125        ["rk",  "HKLM\Software\Symantec", ""], _
126        ["rk",  "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\Norton Commander", ""], _
127        ["rv",  "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", "PendingFileRenameOperations"], _
128        ["rv",  "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce", "Symantec Installer for Windows"], _
129        ["rv",  "HKLM\System\CurrentControlSet\Control\Shutdown", "SetupProgramRan"], _
130        ["rk",  "HKCU\Software\Symantec", ""], _
131        ["",  "", ""]]  ;letzte Zeile special
132
133;################################# ab hier keine Änderungen nötig #################################
134
135$sLogFile = @ScriptDir & "\" & @ComputerName & "-" & @UserName & ".log"
136
137Func _Log($string, $exit)
138        _FileWriteLog($sLogFile, $string)
139        If $exit Then Exit
140EndFunc
141
142Func _RunLog($cmdline, $workdir, $wait)
143        _Log($cmdline, 0)
144
145        If $wait Then
146                RunWait($cmdline, $workdir)
147        Else
148                Run($cmdline, $workdir)
149        EndIf
150
151        If @error Then _Log("Ablauffehler!", 1)
152EndFunc
153
154_Log("-------------------------------------------------------", 0)
155_Log(@OSVersion & " " & @OSServicePack & " Build: " & @OSBuild, 0)
156
157Switch MsgBox($MB_YESNOCANCEL + $MB_ICONQUESTION, "AutoIt-Script", "Norton Commander 95/NT Install (Yes) oder Deinstall (No)?")
158        Case $IDYES
159                For $z = 1 To $iCntDlg
160                        For $y = 0 To 99
161                                For $x = 0 To 7
162                                        $aDlg[$y][$x] = Execute("$aDlg" & $z & "[$y][$x]")
163                                Next
164                        Next
165
166                        For $cnt = 0 To UBound($aDlg) - 1
167                                Dim $p0 = $aDlg[$cnt][0], $p1 = $aDlg[$cnt][1], $p2 = $aDlg[$cnt][2], $p3 = $aDlg[$cnt][3]
168                                Dim $p4 = $aDlg[$cnt][4], $p5 = $aDlg[$cnt][5], $p6 = $aDlg[$cnt][6], $p7 = $aDlg[$cnt][7]
169
170                                Switch $p0
171                                        Case "r"
172                                                If $p3 = "0" Then $p3 = ""  ;Falle!
173                                                _RunLog($p1, $p2, $p3)
174
175                                        Case "w"
176                                                If Not $p3 Then $p3 = 9  ;default timeout
177                                                If Not WinWaitActive($p1, $p2, $p3) Then _Log("TimeOut: " & $p1 & " - " & $p2, 1)
178
179                                        Case "c"
180                                                ControlCommand($p1, $p2, $p3, $p4, $p5)
181
182                                        Case "k"
183                                                If Not $p5 Then $p5 = 1  ;single-click
184                                                ControlClick($p1, $p2, $p3, $p4, $p5, $p6, $p7)
185
186                                        Case "s"
187                                                Send($p1, $p2)
188                                       
189                                        Case "1"  ;special 1
190                                                FileDelete(@WindowsDir & "\~SYMINST.EXE")
191                                                       
192                                                RegDelete("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", "PendingFileRenameOperations")
193                                       
194                                                $fh = FileFindFirstFile("\~SIW*")
195                                                If $fh = -1 Then ContinueLoop
196                                               
197                                                While 1
198                                                        $tmp = FileFindNextFile($fh)
199                                                        If @error Then ExitLoop
200                                                       
201                                                        If FileExists("\" & $tmp & "\SIWDLL32.DLL") Then
202                                                                DirRemove("\" & $tmp, 1)
203                                                        EndIf
204                                                WEnd
205                                               
206                                                FileClose($fh)
207                                               
208                                        Case ""
209                                                ExitLoop
210
211                                        Case Else
212                                                _Log("Invalid Command: " & $p0, 1)
213                                EndSwitch
214
215                                Sleep($iCmdDelay)
216                        Next
217                Next
218               
219                _Log("Installation erfolgreich.", 0)
220
221        Case $IDNO
222                _Log("Uninstall...", 0)
223
224                $dir = IniRead(@WindowsDir & "\siwini.ini", "install", "tempdir", "")  ;bei Install-Abbruch
225                If $dir Then DirRemove($dir, 1)
226
227                For $z = 1 To $iCntDel
228                        For $y = 0 To 99
229                                For $x = 0 To 7
230                                        $aDel[$y][$x] = Execute("$aDel" & $z & "[$y][$x]")
231                                Next
232                        Next
233
234                        For $cnt = 0 To UBound($aDel) - 1
235                                Dim $p0 = $aDel[$cnt][0], $p1 = $aDel[$cnt][1], $p2 = $aDel[$cnt][2]
236                               
237                                Switch $p0
238                                        Case "dm"
239                                                DirMove($p1, $p2, 1)  ;overwrite
240                                       
241                                        Case "fm"
242                                                FileMove($p1, $p2, 1 + 8)  ;overwrite + create
243                                       
244                                        Case "dr"
245                                                DirRemove($p1, 1)  ;files and dirs
246                                       
247                                        Case "fd"
248                                                FileDelete($p1)
249                                       
250                                        Case "rk"
251                                                RegDelete($p1)  ;complete key
252                                       
253                                        Case "rv"
254                                                RegDelete($p1, $p2)  ;single value, (Default) value is ""
255                                       
256                                        Case ""
257                                                ExitLoop
258                                       
259                                        Case Else
260                                                _Log("Invalid Command: " & $p0, 1)
261
262                                EndSwitch
263                        Next
264                Next
265
266                _Log("Deinstallation erfolgreich.", 0)
267               
268        Case Else
269                _Log("Abbruch!", 0)
270
271EndSwitch