Hallo zusammen,
habe mir in Visual Basic eine kleine EXE-Datei erstellt um verschiedene Programme auszuwählen. Nach der Auswahl soll sie mir eine CMD-Datei erstellen. Über die CMD-Datei lasse ich die Programme dann installieren.
Jetzt habe ich folgendes Problem:
Wenn ich nur ein Programm auswähle, kompiliert er mir eine leere CMD-Datei, und wenn ich mehrer Programme auswähle kompiliert er mir nicht alles. Was mache ich da falsch?
Hier nun ein Auszu aus meinem Code:
<pre>Imports System
Imports System.IO
Imports Microsoft.Win32
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Private Sub NoInst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NoInst.Click
Close()
End Sub
Private Sub StartInst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartInst.Click
On Error GoTo ErrHandler
Dim SysDir As String
Dim CMDFile As String
Dim InstDrive As String
Dim InstallPath As String
SysDir = Environ("SystemDrive") 'Systempartition ermitteln
CMDFile = SysDir & "\install\xpaisw\xpaisw.cmd" 'Pfad / Name der Installationsdatei
Dim File As New System.IO.StreamWriter(CMDFile)
Dim fs, d, dc, s, n
fs = CreateObject("Scripting.FileSystemObject")
dc = fs.Drives
For Each d In dc
If d.DriveType = 4 Then
Dim xpaisw As New FileInfo(d.driveletter & ":SETUP\XP\Professional\$OEM$\$1\install\xpaisw\xpaisw.exe")
If xpaisw.Exists Then
InstDrive = d.driveletter & ":"
InstallPath = d.driveletter & ":\install\"
End If
End If
Next
dc = Nothing
fs = Nothing
File.WriteLine("@ECHO OFF")
File.WriteLine("TITLE XPAISW: Software wird installiert...")
If CheckTrillian.Checked Then
File.WriteLine("ECHO Installiere Alcohol 120%... [ca. 00 Min. 40 Sek.]")
File.WriteLine("start /wait " & InstDrive & "\Software\Alcohol120\setup.exe /qn")
End If
'Installationsquellen löschen
If CheckDelResource.Checked Then
File.WriteLine("ECHO Lösche Installationsverzeichnisse...")
File.WriteLine("RD /S /Q %systemdrive%\Install")
'generierte CMD-Datei ausführen
Dim retval As Double
retval = Shell(CMDFile, vbNormalFocus)
ErrHandler:
On Error GoTo 0
Close()
Application.Exit()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If SWinstalled("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{E4DC62CE-5F95-11D6-B254-00C04FF4B435}") = True Then
CheckBox25.Checked = False
CheckBox25.Enabled = False
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
CheckBox25.Checked = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CheckBox25.Checked = True
If SWinstalled("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{E4DC62CE-5F95-11D6-B254-00C04FF4B435}") = True Then
CheckBox25.Checked = False
CheckBox25.Enabled = False
End If
End Sub
Function SWinstalled(ByVal RegKey As String) As Boolean
Dim OpenKey As RegistryKey
OpenKey = Registry.LocalMachine.OpenSubKey(RegKey, False)
If (Not OpenKey Is Nothing) Then
SWinstalled = True
OpenKey.Close()
Else
SWinstalled = False
End If
End Function
End Class</pre>
Das kommt dabei raus wenn ich mehrere Programme auswähle:
<pre>@ECHO OFF
TITLE XPAISW: Software wird installiert...
ECHO Installiere Norton Internet Securety 2004...[ca. 02 Min. 10 Sek.]
start /wait \Software\Internet2004\SYMSETUP.EXE /qn REBOOT=REALLYSUPPRESS
start /wait %systemdrive%\install\Sleep.exe /100
ECHO Installiere McAfee VirusScan 7 pro... [ca. ?? Min. ?? Sek.]
start /wait \Software\VSP7\VSP.msi /qn FASTOEM=1
start /wait %systemdrive%\install\Sleep.exe /60
ECHO Installiere ISO Buster 1.5... [ca. 00 Min. 20 Sek.]
star</pre>
Bin euch dankbar für jede Hilfe.
Gruß pastl
Ihr könnt mir auch eine email schreiben:
pastl1@cable.vol.at
p.s. hoffe das ist das richtige Forum dafür, da ich wenig Erfahrung in VB habe.
habe mir in Visual Basic eine kleine EXE-Datei erstellt um verschiedene Programme auszuwählen. Nach der Auswahl soll sie mir eine CMD-Datei erstellen. Über die CMD-Datei lasse ich die Programme dann installieren.
Jetzt habe ich folgendes Problem:
Wenn ich nur ein Programm auswähle, kompiliert er mir eine leere CMD-Datei, und wenn ich mehrer Programme auswähle kompiliert er mir nicht alles. Was mache ich da falsch?
Hier nun ein Auszu aus meinem Code:
<pre>Imports System
Imports System.IO
Imports Microsoft.Win32
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Private Sub NoInst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NoInst.Click
Close()
End Sub
Private Sub StartInst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartInst.Click
On Error GoTo ErrHandler
Dim SysDir As String
Dim CMDFile As String
Dim InstDrive As String
Dim InstallPath As String
SysDir = Environ("SystemDrive") 'Systempartition ermitteln
CMDFile = SysDir & "\install\xpaisw\xpaisw.cmd" 'Pfad / Name der Installationsdatei
Dim File As New System.IO.StreamWriter(CMDFile)
Dim fs, d, dc, s, n
fs = CreateObject("Scripting.FileSystemObject")
dc = fs.Drives
For Each d In dc
If d.DriveType = 4 Then
Dim xpaisw As New FileInfo(d.driveletter & ":SETUP\XP\Professional\$OEM$\$1\install\xpaisw\xpaisw.exe")
If xpaisw.Exists Then
InstDrive = d.driveletter & ":"
InstallPath = d.driveletter & ":\install\"
End If
End If
Next
dc = Nothing
fs = Nothing
File.WriteLine("@ECHO OFF")
File.WriteLine("TITLE XPAISW: Software wird installiert...")
If CheckTrillian.Checked Then
File.WriteLine("ECHO Installiere Alcohol 120%... [ca. 00 Min. 40 Sek.]")
File.WriteLine("start /wait " & InstDrive & "\Software\Alcohol120\setup.exe /qn")
End If
'Installationsquellen löschen
If CheckDelResource.Checked Then
File.WriteLine("ECHO Lösche Installationsverzeichnisse...")
File.WriteLine("RD /S /Q %systemdrive%\Install")
'generierte CMD-Datei ausführen
Dim retval As Double
retval = Shell(CMDFile, vbNormalFocus)
ErrHandler:
On Error GoTo 0
Close()
Application.Exit()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If SWinstalled("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{E4DC62CE-5F95-11D6-B254-00C04FF4B435}") = True Then
CheckBox25.Checked = False
CheckBox25.Enabled = False
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
CheckBox25.Checked = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CheckBox25.Checked = True
If SWinstalled("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{E4DC62CE-5F95-11D6-B254-00C04FF4B435}") = True Then
CheckBox25.Checked = False
CheckBox25.Enabled = False
End If
End Sub
Function SWinstalled(ByVal RegKey As String) As Boolean
Dim OpenKey As RegistryKey
OpenKey = Registry.LocalMachine.OpenSubKey(RegKey, False)
If (Not OpenKey Is Nothing) Then
SWinstalled = True
OpenKey.Close()
Else
SWinstalled = False
End If
End Function
End Class</pre>
Das kommt dabei raus wenn ich mehrere Programme auswähle:
<pre>@ECHO OFF
TITLE XPAISW: Software wird installiert...
ECHO Installiere Norton Internet Securety 2004...[ca. 02 Min. 10 Sek.]
start /wait \Software\Internet2004\SYMSETUP.EXE /qn REBOOT=REALLYSUPPRESS
start /wait %systemdrive%\install\Sleep.exe /100
ECHO Installiere McAfee VirusScan 7 pro... [ca. ?? Min. ?? Sek.]
start /wait \Software\VSP7\VSP.msi /qn FASTOEM=1
start /wait %systemdrive%\install\Sleep.exe /60
ECHO Installiere ISO Buster 1.5... [ca. 00 Min. 20 Sek.]
star</pre>
Bin euch dankbar für jede Hilfe.
Gruß pastl
Ihr könnt mir auch eine email schreiben:
pastl1@cable.vol.at
p.s. hoffe das ist das richtige Forum dafür, da ich wenig Erfahrung in VB habe.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „pastl“ ()