Balrog Installer Tool ins Deutsche übertragen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
roboehler
Beiträge: 12
Registriert: 03.01.2005 22:32
Wohnort: 78713 Schramberg

Balrog Installer Tool ins Deutsche übertragen

Beitrag von roboehler »

Ich habe vor einiger Zeit im internationalen PB-Forum den Skript eines Installertools von Balrog Software gefunden, da ich grad mal sowas gebraucht habe. Ich habe das Tool für meine eigene Zwecke ins Deutsche übersetzt. Vielleicht interessieren sich ja auch andere PB-User dafür.
(Ich hoffe, ich begehe damit keine Urheberrechtsverletzung -aber ich denke, dass codes die in den Foren veröffentlicht werden allen Usern zugänglich sein sollen)

1. Der Code, der eine Installexe herstellt

Code: Alles auswählen

; Installer utility program 

Global Image 

Procedure ExtractFile(File.s) 
  Address=NextPackFile() 
  Size = PackFileSize() 
  MemAddress=AllocateMemory(Size) 
  CopyMemory(Address,MemAddress,Size) 
  If CreateFile(0,File.s) 
    WriteData(MemAddress,Size) 
    CloseFile(0) 
  Else 
    MessageBox_(0,"Ich kann diese Datei nicht erstellen!:"+Chr(10)+File.s,WindowName.s,#MB_ICONWARNING) 
    ClosePack() 
    End 
  EndIf 
  FreeMemory(MemAddress) 
EndProcedure 

Procedure.s GetTempFileName() 
  temppath.s=Space(255) 
  GetTempPath_(255,temppath) 
  stemp.s=Space(255) 
  GetTempFileName_( temppath, "KPD", 0, @sTemp.s) 
  ProcedureReturn sTemp.s 
EndProcedure 

Enumeration 
  #Installer_Window 
EndEnumeration 
; 
Enumeration 
  #SVM_LOGO 
  #Text 
  #Frame3D_0 
  #Text_3 
  #InstallPath 
  #OpenRequester 
  #Install 
  #Exit 
  #Text_4
  #ProgressBar
  #help 
EndEnumeration 

a$=Space(255) : GetModuleFileName_(0,@a$,255) : appname$=GetFilePart(a$) 

If ReadFile(0, appname$) 

  FileSeek(Lof()-12) 
  lenpack.l = ReadLong() 

  FileSeek(Lof()-8) 
  leninstall.l = ReadLong() 

  FileSeek(Lof()-4) 
  lenicon.l = ReadLong() 

  *mempack = AllocateMemory(lenpack) 
  FileSeek(Lof()-12-leninstall-lenpack-lenicon) 
  ReadData(*mempack, lenpack) 
  
  *meminstall = AllocateMemory(leninstall) 
  FileSeek(Lof()-12-leninstall-lenicon) 
  ReadData(*meminstall, leninstall) 
  
  *memicon = AllocateMemory(lenicon) 
  FileSeek(Lof()-12-lenicon) 
  ReadData(*memicon, lenicon) 
      
  tmpfilepack.s=GetTempFilename() 
  If CreateFile(1, tmpfilepack.s) 
    WriteData(*mempack, lenpack) 
    CloseFile(1) 
  EndIf 
  tmpfileinstall.s=GetTempFilename() 
  If CreateFile(1, tmpfileinstall.s) 
    WriteData(*meminstall, leninstall) 
    CloseFile(1) 
  EndIf 
  tmpfileicon.s=GetTempFilename() 
  If CreateFile(1, tmpfileicon.s) 
    WriteData(*memicon, lenicon) 
    CloseFile(1) 
  EndIf 

  CloseFile(0) 
EndIf 
    
Global WindowName.s, WindowText.s, FinalMessage.s 

NewList InstallerScript.s() 

If ReadFile(0, tmpfileinstall.s) 
  WindowName.s=ReadString() 
  WindowText.s=ReadString() 
  FinalMessage.s=ReadString() 
  ;eingefügt
  InstallPath.s=ReadString() 
  ;ende einfüg
  ProgramDir.s=ReadString() 
   While Eof(0)=0 
    LastElement(InstallerScript()) 
    AddElement(InstallerScript()) 
    InstallerScript()=ReadString() 
  Wend 
  CloseFile(0) 
EndIf 

If lenicon>0 
  LoadImage(0,tmpfileicon.s) 
  UseImage(0)  
  Image=ImageID() 
EndIf 

Procedure Open_Installer_Window() 
  If OpenWindow(#Installer_Window, 357, 261, 220, 320,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered ,  WindowName.s) 
    If CreateGadgetList(WindowID()) 
      ImageGadget(#SVM_LOGO, 5, 5, 32, 32, Image) 
      TextGadget(#Text, 40, 5, 175, 100,  WindowText.s, #PB_Text_Center) 
      Frame3DGadget(#Frame3D_0, 5, 145, 210, 100, WindowName.s) 
      TextGadget(#Text_3, 15, 175, 30, 15, "Pfad:") 
      ;StringGadget(#InstallPath, 45, 170, 135, 20, "",#PB_String_ReadOnly) 
      StringGadget(#InstallPath, 45, 170, 135, 20, "")
      ;StringGadget(#InstallPath, 45, 170, 135, 20, "") 
      ;ButtonGadget(#OpenRequester, 185, 170, 20, 20, "...") 
      ButtonGadget(#Install, 15,200, 90, 20, "Installiere in:") 
      ButtonGadget(#Exit, 115, 200, 90, 20, "Exit") 
      ProgressBarGadget(#ProgressBar, 15, 225, 190, 10, 0, 100) 
      TextGadget(#Text_4, 70, 300, 90, 15, "ScriptVM Installer")
    ButtonGadget(#help,65,260,90,25,"Hilfe")
EndIf 
  EndIf 
EndProcedure 

Open_Installer_Window() 

Repeat 
  
  Event = WaitWindowEvent() 
  
  If Event = #PB_EventCloseWindow 
    Quit=1 
  EndIf 
  
  If Event = #PB_EventGadget 
    
    GadgetID = EventGadgetID() 
    
    If  GadgetID = #Install 
      InstallDir.s=GetGadgetText(#InstallPath) 
      CreateDirectory(InstallDir.s) 

      If OpenPack(tmpfilepack) 
      
        ItemNb=CountList(InstallerScript()) 
        CountFiles=0 

        For It=0 To ItemNb-1 
          SelectElement(InstallerScript(),It)    
          If StringField(InstallerScript(),1,"|")="INSTALL" 
            ExtractFile(InstallDir.s+StringField(InstallerScript(),3,"|")+StringField(InstallerScript(),2,"|")) 
          ElseIf StringField(InstallerScript(),1,"|")="MAKEDIR" 
            CreateDirectory(InstallDir.s+StringField(InstallerScript(),2,"|")) 
          EndIf 
          percent.f=((It+1)/ItemNb)*100 
          SetGadgetState(#ProgressBar, percent.f) 
        Next It 
      
        ClosePack() 
      
      EndIf 
    
      MessageBox_(0, FinalMessage.s, WindowName.s,#MB_ICONINFORMATION) 
      Quit=1 
      
    ElseIf GadgetID = #Exit 
      Quit=1 
      
    ElseIf GadgetID = #InstallPath 
      InstallDir.s=GetGadgetText(#InstallPath) 
      
    ElseIf GadgetID = #OpenRequester 
      InstallDir.s=PathRequester("Ein von Ihnen gewähltes Verzeichnis ' "+ProgramDir.s+" ' wird erstellt."+Chr(10)+"Wählen Sie ein Verzeichnis:","") 
      
      If Right(InstallDir.s,1)<>"\" : InstallDir+"\" : EndIf 
      If Len(InstallDir)>1 
        InstallDir.s+ProgramDir.s 
      Else 
        InstallDir.s="" 
      EndIf 
      SetGadgetText(#InstallPath,InstallDir.s)
       
      ElseIf GadgetID = #help ;----------Code zurück
   ;+ Chr(10)oder Chr(13)  ; Chr(10) wird nur für den Zeilenumbruch benötigt 
   MessageRequester("Hilfe zur Balrog Installer-EXE ","1.Nachdem Sie den Installer gestartet haben, geben Sie im freien Feld bei << Pfad >> nur einen "+Chr(10)+"    Laufwerksbuchstaben c:\ oder  d:\ oder  e:\ usw.ein. Das Programm wird mit seinem "+Chr(10)+"    Anwendungsnamen (siehe Installerüberschrift) in das von Ihnen gewählte Laufwerk entpackt, "+Chr(10)+"    sobald sie auf den << Installiere in: >>-Knopf drücken"+Chr(10)+"2. Das Programm legt während seiner Installation keinerlei versteckte Dateien im Windowssystem-"+Chr(10)+"    Verzeichnis oder in der Registry ab. Es wird lediglich in einen Ordner mit seinem Anwendungs- "+Chr(10)+"    namen kopiert."+Chr(10)+"3. Eine Deinstallation ist daher einfach und problemlos möglich. Sie löschen einfach den Ordner mit"+Chr(10)+"    dem Anwendungsnamen des Programms vom Laufwerk, in welches sie das Programm entpackt"+Chr(10)+"    haben. Und die ganze Deinstallation des Programms ist erledigt."+Chr(10)+Chr(10)+"     Wichtige Anmerkung; ***** Haftungsausschluss ****"+Chr(10)+"    - Obwohl dieses Programm ausführlich getestet wurde übernimmt der Autor keine Haftung für "+Chr(10)+"     Schäden, die an Ihrer Soft- oder Hardware durch die Benutzung dieses Programms, das jetzt"+Chr(10)+"     auf Ihrem Rechner installiert wird, möglicherweise entstehen können !"+Chr(10)+Chr(10)+"            Hilfe verfasst von c) ProgrammAutor xyz usw. ",0)
 
 
                         
  ;EndIf
   
    EndIf 
    
  EndIf 
  
Until Quit=1 

FreeMemory(-1) 
DeleteFile(tmpfilepack) 
DeleteFile(tmpfileinstall) 
DeleteFile(tmpfileicon) 

End 

und der zweite Teil dazu, das Installerhauptprogramm:

Code: Alles auswählen


;This is the installer tool creation, with this code generate the pack, 
;the actions txt file And include on a stand-alone executable file: 

Code: 

; Installer tool by Balrog Software 

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #Frame3D_0 
  #Text_0 
  #WindowName 
  #WindowText 
  #Text_1 
  #FinalMessage 
  #Text_2 
  #ListIcon_Actions 
  #Frame3D_1 
  #AddFile 
  #DeleteFile 
  #CreateDir 
  #IconFile 
  #Text_3 
  #LoadIconFile 
  #Frame3D_3 
  #Text_5 
  #OutputFile 
  #LoadExe 
  #GenerateInstaller 
  #Frame3D_4 
  #Text_6 
  #MainDir 
  #SVM_LOGO 
  #Text 
  #Frame3D_5 
  #Text_7 
  #InstallPath 
  #OpenRequester 
  #Install 
  #Exit 
  #ProgressBar
  #help 
  #ende
  #W1Btn3
  #Text_8
  #Text_9
  #Text_10
  #Text_11
EndEnumeration 

Global Image 
Image = CatchImage(0, ?Image) 

Procedure Open_Window_Installer() 
  If OpenWindow(#Window_0, 216, 0, 600, 370,  #PB_Window_SystemMenu |#PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "ScriptVM Installationswerkzeug - Installer tool by c) Balrog Software ") 
    If CreateGadgetList(WindowID()) 
     Frame3DGadget(#Frame3D_0, 5, 5, 235, 125, "Konfiguriere Informationen") 
      TextGadget(#Text_0, 15, 30, 70, 15, "Anw.name") 
      StringGadget(#WindowName, 90, 25, 140, 20, "Anwendungsname") 
      StringGadget(#WindowText, 90, 50, 140, 20, "Fenstertext") 
      TextGadget(#Text_1, 15, 55, 70, 15, "Fenstertext") 
      StringGadget(#FinalMessage, 90, 75, 140, 20, "") ;Installtext eingeben
      TextGadget(#Text_2, 15, 80, 70, 15, "Installtext:") 
      StringGadget(#IconFile, 90, 100, 115, 20, "") ;Hier wird Pfad von Iconfile eingefügt
      TextGadget(#Text_3, 15, 105, 65, 15, "Icon dazu:") 
      ButtonGadget(#LoadIconFile, 210, 100, 20, 20, "...");Dateiwahl Iconfile


      ListIconGadget(#ListIcon_Actions, 255, 25, 310, 100, "Aktion", 70) 
      AddGadgetColumn(#ListIcon_Actions, 2, "Dateiname", 100) 
      AddGadgetColumn(#ListIcon_Actions, 3, "Zielort", 150) 
  
      Frame3DGadget(#Frame3D_1, 245, 5, 350, 225, "Installer Aktionen") 
      ButtonGadget(#AddFile, 255, 130, 105, 20, "Dateien hinzufügen") 
      ButtonGadget(#DeleteFile, 365, 130, 90, 20, "Lösche Eingabe") 
      ButtonGadget(#CreateDir, 460, 130, 105, 20, "Erstelle Verzeichnis") 
      TextGadget(#Text_6, 270, 160, 130, 15, "Eingabe Laufwerkname:") 
      TextGadget(#Text_9, 255, 180, 330, 15, "1.Gib hier zuerst einen Laufwerksbuchstaben c:\, d:\, e:\ oder so ein.") 
      TextGadget(#Text_10, 255, 195, 330, 15, "2. Wähle dann den ' Erstelle Verzeichnis '-Knopf.") 
      TextGadget(#Text_11, 255, 210, 330, 15, "3. Gehe anschließend auf ' Dateien hinzufügen!'.")
      StringGadget(#MainDir, 395, 155, 30, 20, "") ;Feld für Laufwerksname
      ;Hier sind wir dran
      Frame3DGadget(#Frame3D_3, 245, 245, 350, 70, "Installer herstellen") 
      TextGadget(#Text_5, 290, 265, 190, 15, "exe-Ausgabedatei:") 
      StringGadget(#OutputFile, 385, 260, 170, 20, "") ;Feld für exe-Name
      ButtonGadget(#LoadExe, 565, 260, 20, 20, "...");Dateiwahl für exe-Name
      ButtonGadget(#GenerateInstaller, 255, 285, 120, 20, "Stelle den Installer her") 
      ProgressBarGadget(#ProgressBar, 385, 285, 170, 20, 0, 100) 
      Frame3DGadget(#Frame3D_4, 5, 135, 235, 190, "Installer - Ausgabe Ansicht - noch funktionslos") 
      
      ImageGadget(#SVM_LOGO, 17, 150, 32, 32, Image) 
      TextGadget(#Text, 52, 150, 175, 100,  "Hier erscheint der Fenstertext", #PB_Text_Center) 
      Frame3DGadget(#Frame3D_5, 10, 255, 226, 65, "Name der Anwendung") 
      TextGadget(#Text_7, 15, 275, 55, 20, "Install-Pfad:") 
      StringGadget(#InstallPath, 80, 270, 120, 0, "",#PB_String_ReadOnly) 
       ButtonGadget(#OpenRequester, 208, 270, 20, 20, "...");Wahlknopf für Installpfad - noch funktionslos 
      ButtonGadget(#Install,27, 295, 90, 20, "Installiere in:") 
      ButtonGadget(#Exit, 127, 295, 90, 20, "Exit")
       
      
      ButtonGadget(#W1Btn3,290,320,90,25,"about")
      ButtonGadget(#help,390,320,90,25,"Hilfe")
      ButtonGadget(#ende,490,320,90,25,"ENDE")
      TextGadget(#Text_8, 100, 350, 410, 15, "Ins Deutsche übertragen von c) Robert Böhler; 78713 Schramberg; roboehler@web.de") 
    EndIf 
  EndIf 
EndProcedure 

DataSection: 
Image: 
IncludeBinary "L:\purebasic392\rbs2.ico" 
EndDataSection 

Open_Window_Installer() 

;WindowName.s="Application Name" 
;WindowText.s="Window Text" 
WindowName.s="Anwendungsname" 
WindowText.s="Fenstertext"

NewList InstallerScript.s() 
NewList InstallerFile.s() 

Repeat 
  
  Event = WaitWindowEvent() 
  
  If Event = #PB_EventGadget 

    GadgetID = EventGadgetID() 
    
    If GadgetID = #WindowName 
      WindowName.s=GetGadgetText(#WindowName) 
      SetGadgetText(#Frame3D_5,WindowName) 
    
    ElseIf GadgetID = #WindowText 
      WindowText.s=GetGadgetText(#WindowText) 
      SetGadgetText(#Text,WindowText) 
    
    ElseIf GadgetID = #FinalMessage 
      FinalMessage.s=GetGadgetText(#FinalMessage) 
      
    
    ElseIf GadgetID = #ListIcon_Actions 
      ItemNb=CountGadgetItems(#ListIcon_Actions) 
      For It=1 To ItemNb 
        If GetGadgetItemState(#ListIcon_Actions, It)=#PB_ListIcon_Selected 
          ItemSelected=It 
        EndIf 
      Next It 
      
    ElseIf GadgetID = #AddFile 
      If Len(ProgramDir.s)>1 
      NewFile.s=OpenFileRequester("Lade Dateiname", "","",0,#PB_Requester_MultiSelection) 
      If NewFile 
        AddGadgetItem(#ListIcon_Actions,-1,"INSTALL"+Chr(10)+GetFilePart(NewFile)+Chr(10)+"{PATH}\"+ProgramDir.s+Dir.s+GetFilePart(NewFile)+Chr(10))    
         
        LastElement(InstallerScript()) 
        LastElement(InstallerFile()) 
        AddElement(InstallerScript()) 
        AddElement(InstallerFile()) 
        
        InstallerScript()="INSTALL|"+GetFilePart(NewFile)+"|"+Dir.s 
        InstallerFile()=NewFile 
        Repeat 
          NewFile.s=NextSelectedFileName() 
          If NewFile 
            AddGadgetItem(#ListIcon_Actions,-1,"INSTALL"+Chr(10)+GetFilePart(NewFile)+Chr(10)+"{PATH}\"+ProgramDir.s+Dir.s+GetFilePart(NewFile)+Chr(10))    
            
            LastElement(InstallerScript()) 
            LastElement(InstallerFile()) 
            AddElement(InstallerScript()) 
            AddElement(InstallerFile()) 
            
            InstallerScript()="INSTALL|"+GetFilePart(NewFile)+"|"+Dir.s 
            InstallerFile()=NewFile 
          EndIf 
        Until Len(NewFile)=0 
      EndIf 
      Else 
      MessageBox_(0,"Gib zuerst einen Laufwerksnamen und danach einen Verzeichnisnamen ein","Error",#MB_ICONWARNING) 
      EndIf 
      
    ElseIf GadgetID = #DeleteFile 
      RemoveGadgetItem(#ListIcon_Actions, ItemSelected) 
      SelectElement(InstallerScript(), ItemSelected) 
      SelectElement(InstallerFile(), ItemSelected) 
      DeleteElement(InstallerScript()) 
      DeleteElement(InstallerFile()) 

    
   ElseIf GadgetID = #CreateDir 
      Dir.s=InputRequester("Verzeichnis erstellen","Gib hier den Verzeichnisnamen ein - ohne c:\ oder d:\ usw...","") 
      If Left(Dir.s,1)="\" : Dir.s=Right(Dir.s,Len(Dir.s)-1) : EndIf 
      If Right(Dir.s,1)<>"\" : Dir.s+"\" : EndIf 
      AddGadgetItem(#ListIcon_Actions,-1,"MAKEDIR"+Chr(10)+""+Chr(10)+"{PATH}\"+ProgramDir+Dir+Chr(10))    
      LastElement(InstallerScript()) 
      LastElement(InstallerFile()) 
      AddElement(InstallerScript()) 
      AddElement(InstallerFile()) 
      InstallerScript()="MAKEDIR|"+Dir.s 
      InstallerFile()="{DIR}" 
    
    ;eingefügt 
    
      ;ende der Einfügung 
       
    ElseIf GadgetID = #IconFile 
      IconFile.s=GetGadgetText(#IconFile) 
      
    ElseIf GadgetID = #LoadIconFile 
      IconFile.s=OpenFileRequester("Lade eine Icondatei of 32x32", "","icon file format|*.ico",0) 

      SetGadgetText(#IconFile,IconFile) 
      LoadImage(1,IconFile) 
      SetGadgetState(#SVM_LOGO, UseImage(1)) 

    ElseIf GadgetID = #OutputFile 
      OutputFile.s=GetGadgetText(#OutputFile) 
      
    ElseIf GadgetID = #LoadExe 
      OutputFile.s=SaveFileRequester("Geben Sie den Namen für die Install-exe ein", "","executable format|*.exe",0) 
      If UCase(GetExtensionPart(OutputFile.s))<>"EXE" 
        OutputFile.s+".exe" 
      EndIf 
      SetGadgetText(#OutputFile, OutputFile.s) 
      
    ElseIf GadgetID = #GenerateInstaller 
      ItemNb=CountList(InstallerScript()) 
      CountFiles=0 
      
      For It=0 To ItemNb-1 
        SelectElement(InstallerScript(),It) 
        If StringField(InstallerScript(),1,"|")="INSTALL" 
          CountFiles+1 
        EndIf 
      Next It 
      SetGadgetState(#ProgressBar,0) 
      If CreatePack("tmp.pak") 
        For It=0 To ItemNb-1 
          SelectElement(InstallerFile(),It) 
          
          AddPackFile(InstallerFile(),9) 
          percent.f=((It+1)/(ItemNb))*100 
          SetGadgetState(#ProgressBar, percent.f) 
        Next It 
        ClosePack() 
      EndIf 
      If CreateFile(0,"InstallerActions.txt") 
        WriteStringN(WindowName) 
        WriteStringN(WindowText) 
        WriteStringN(FinalMessage) 
        ;eingefügt
        WriteStringN(InstallPath.s)
        ;ende einfügung
        WriteStringN(ProgramDir.s) 
        For It=0 To ItemNb-1 
          SelectElement(InstallerScript(),It) 
          WriteStringN(InstallerScript()) 
        Next It 
        CloseFile(0) 
      EndIf 
        
      If ReadFile(0,"tmp.pak") 
        lenpack = Lof() 
        If lenpack>0 
          *mempack = AllocateMemory(lenpack) 
          ReadData(*mempack, lenpack) 
        EndIf 
        CloseFile(0) 
      EndIf 
      
      If ReadFile(0,"InstallerActions.txt") 
        leninstall = Lof() 
        If leninstall>0 
          *meminstall = AllocateMemory(leninstall) 
          ReadData(*meminstall, leninstall) 
        EndIf 
        CloseFile(0) 
      EndIf 
      
      If ReadFile(0,IconFile.s) 
        lenicon = Lof()  
        If lenicon>0 
          *memicon = AllocateMemory(lenicon) 
          ReadData(*memicon, lenicon) 
        EndIf 
        CloseFile(0) 
      EndIf 
      
      If lenpack>0 And leninstall>0 And lenicon>0 And Len(FinalMessage.s)>0 
        ;Create the installer program with attatched pack archive. 
        If CreateFile(0, OutputFile) 
          WriteData(?filestart, ?fileend-?filestart)  
          WriteData(*mempack, lenpack)  
          WriteData(*meminstall, leninstall) 
          WriteData(*memicon, lenicon) 
          WriteLong(lenpack) 
          WriteLong(leninstall) 
          WriteLong(lenicon) 
          
          CloseFile(0) 
          MessageBox_(0,"Die Installer-Exe wurde erstellt","Installer",#MB_ICONEXCLAMATION) 
        EndIf 
      Else 
        MessageBox_(0,"Konnte die Install-Komponenten nicht erstellen","Error",#MB_ICONWARNING) 
      EndIf 
      FreeMemory(*mempack) 
      FreeMemory(*meminstall) 
      FreeMemory(*memicon) 
      DeleteFile("tmp.pak") 
      ;DeleteFile("InstallerActions.txt") 
        
    ElseIf GadgetID = #MainDir 
      ProgramDir.s=GetGadgetText(#MainDir) 
      If Right(ProgramDir.s,1)<>"\" : ProgramDir.s+"\" : EndIf 
      EndIf 
              
        If GadgetID = #W1Btn3 ;----------Code zurück
   MessageRequester("INFO ","Install-Programm von c) BalrogSoftware"+Chr(13)+"Leicht verändert und übertragen ins Deutsche"+Chr(13)+"von ' Robert Böhler '"+Chr(13)+"         Leibbrandstr.8"+Chr(13)+"D 78713 Schramberg"+Chr(13)+"Tel.:07422/23668"+Chr(13)+"E-Mail: roboehler@gmx.de"+Chr(13)+"            roboehler@web.de"+Chr(13)+"          made with Purebasic 3.92"+Chr(13),0)                        
       EndIf
       If GadgetID = #help ;----------Code zurück
   ;+ Chr(10)oder Chr(13)  ; Chr(10) wird nur für den Zeilenumbruch benötigt 
   MessageRequester("Hilfe zum Balrog Installer Tool","1.Gib in das leere Feld bei << Laufwerkname >> zuerst einen Laufwerksbuchstaben c:\, d:\, e:\ "+Chr(10)+"    oder so ein."+Chr(10)+"2. Wähle dann den ' Erstelle Verzeichnis '-Knopf und gib einen Verzeichnisnamen ein."+Chr(10)+"3. Gehe auf ' Dateien hinzufügen.' Wähle im Dateiwahlfenster ein Verzeichnis aus, das gepackt"+Chr(10)+"    werden soll. Klicke das Verzeichnis an und markiere die Dateien. Mit Linksklick auf den Button"+Chr(10)+"    ' öffnen ' werden die gewählten Dateien ins Fenster 'Installer-Aktionen' übernommen."+Chr(10)+"4. Im Feld 'Konfiguriere Aktionen' tragen wir nun den Namen unseres 'Programms' ein.Im Fenstertext"+Chr(10)+"    und im Installtext werden wichtige Informationen zum Programm und zu der Installation vermerkt."+Chr(10)+"    Hier kann auch ein eigenes Icon beigefügt werden."+Chr(13)+"5. In der ' Ausgabe Installer Ansicht' erscheint der oben eingegebene Fenstertext."+Chr(10)+"6. Installer herstellen: Wir drücken auf den Button neben dem leeren Feld bei exe-Ausgabedatei."+Chr(10)+"    Im Dateiwahlpopup geben wir einen Namen für die zu erstellende Install-Exe ein!"+Chr(10)+"7. Letzter Schritt: Wir drücken auf den Knopf ' Stelle den Installer her ' und eine gepackte Install.exe"+Chr(10)+"    mit dem von uns gewählten exe-Namen wird erzeugt."+Chr(10)+Chr(10)+"            Hilfe verfasst von c) Robert Böhler - 2005 - ",0)                        
  EndIf
   If GadgetID = #ende 
          ;----------Code; the user click the button 
                 Quit=1   
               EndIf   
EndIf 
Until Quit=1 Or Event = #PB_EventCloseWindow 

End 

;Include the extraction program 
filestart: 
IncludeBinary "L:\purebasic392\install1.exe" 
fileend: 

Hab dann später den Pureinstaller gefunden, der wesentlich besser ist, aber für kleine Anwendungen genügt dieses Programm auch.