Problem beim Erstellen einer CMD-Datei


wappl

Grünschnabel
Hallo zusammen,

habe mir in Visual Basic.net 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, erzeugt sie mir eine leere CMD-Datei, und wenn ich mehrer Programme auswähle erzeugt sie mir nicht alles. Was mache ich da falsch?

Hier nun ein Auszu aus meinem Code:


Code:
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

' CMD-Datei

        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

***** und ca. 30 weitere If-Bedingungen 



 '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

' Reg-Abfrage, ob Programm schon installiert ist

    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

***** und ca. 30 weitere If-Bedingungen 

    End Sub

' Auswal löschen/zurücksetzen

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

               CheckBox25.Checked = False

***** und ca. 30 weitere False-Bedingungen 

    End Sub

'Alles auswählen

    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

***** und ca. 30 weitere If-Bedingungen 

    End Sub

' Funktion zur REG-Überprüfung

    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



Das wird dann z.B. erzeugt, wenn ich mehrere Programme auswähle:



Code:
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


Bin euch dankbar für jede Hilfe. Falls jemand das Packet zur Einsicht haben möchte, muß er mir einfach seine email-Adresse bekanntgeben. es ist gepackt etwa 1,1 mb groß, und mit Visual Basic.NET 2003 programmiert.

Gruß pastl

Ihr könnt mir auch eine email schreiben:

pastl1@cable.vol.at
 

Anhänge

  • mca.jpg
    mca.jpg
    69,3 KB · Aufrufe: 110
Zuletzt bearbeitet: