FileInstallFolder ? Geht das ganzen ordner + Unterverzeichnis einbinden ?

  • bei mehreren Datein empfiehlt es sich ein sfx zu benutzen, bzw zip und die dann entpacken

  • joar dazu hab ich mal ne frage, gibt es eine sfx die ich quasi mit run ausführen kann also dass sie im hintergrund ohne sichtbar zu sein sich irgendwo hin entpackt?

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • naja man hat eine sfx, z.b. mit winrar erstellt:

    test.exe wenn man diese öffnet bekommt man ein auswahlfenster wohin man das ganze entpacken will, und dieses auswahlfenster soll garnet kommen sondern das man das ziel per pararmeter angibt: run("C:\test.exe -C:\testordner\") irgendwie so halt^^ und das ganze dann im Hintergrund läuft :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • könnte man das net als UDF (is jedenfalls ein versuch von mir :D) nehmen? bei mir hats auf jeden fall funktioniert :D

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    Func FileInstallFolder($from, $to, $overwrite)
    If StringRight($from, 1) <> "\" Then
    $from = $from&"\"
    EndIf
    If StringRight($to, 1) <> "\" Then
    $to = $to&"\"
    EndIf
    $files = _FileListToArray($from, "*", 1)
    Select
    Case @error = 1
    SetError(1)
    Return(0)
    Case @error = 2
    SetError(2)
    Return(0)
    Case @error = 3
    SetError(3)
    Return(0)
    Case @error = 4
    SetError(4)
    Return(0)
    Case Else
    $dir = DirCreate($to)
    If $dir = 0 Then
    SetError(5)
    Return(0)
    EndIf
    For $i = 1 To $files[0]
    $install = FileInstall($from&$files[$i], $to&$files[$i], $overwrite)
    If $install = 0 Then
    SetError(6)
    Dim $error[2]
    $error[0] = 0
    $error[1] = $files[$i]
    Return($error)
    EndIf
    Next
    SetError(0)
    Return(1)
    EndSelect
    EndFunc ;==>FileInstallFolder

    [/autoit]

    Return Value
    @Error:
    1 = Path not found or invalid
    2 = Invalid $sFilter
    3 = Invalid $iFlag
    4 = No File(s) Found
    5 = Create a directory failed
    6 = FileInstall failed (exception: Returns an Array: $array[0] = 0, $array[1] = Current File)
    ==>Return 0

    Success:
    Return 1

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    5 Mal editiert, zuletzt von FireFlyer (10. März 2008 um 17:30)

  • ich dachte, das Fileinstall beim ersten Parameter nur absolute Pfade benutzt und keine Variablen oder wurde das geändert?

  • öhh ja les ich auch grad^^ LOL aber es geht irgendwie trotzdem :D

    Hab die Funktion so benutzt: FileInstallFolder("C:TEST", "C:TEST2", 1) und er hat alle dateien da reininstalliert^^


    //EDIT: *schei*** es geht direkt von scite aus aber nicht wenn man das script compilieren will :/... kann man da irgendwas trixxxxxen?

    Wie funktioniert denn der Befehl #include könnte man mit dem was machen???

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (10. März 2008 um 19:07)

  • @mega wenn du mir eine SFX oder sowas zeigst die:
    man per Ausführen (run) öffnen kann (kla geht bei jeder) und man direkt per Pararmeter das Zielverzeichnis bestimmen kann, sodass das ganze im Hintergrund läuft, dann mach ich das ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • einfach bei den SFX-Einstellungen von Winrar o.O? z.B. in das selbe Verzeichnis oder ins Temp - man muss sich halt auch ma die Mühe machen das anzuschauen

    • Offizieller Beitrag

    Hi,

    ich würde dem Anwender immer die Chance geben zu sehen, wo du was hinpackst - es sei denn es geht in TEMP. Wenn du es verstecken willst, musst du halt wirklich jeden Befehl einzeln schreiben oder die commandline Variante von 7zip testen, ob du die mit Fileinstallen kannst du dann die entpackte exe mit -a silent entpacken kannst.

    Mega

  • Ich hab hier aus der Func von oben ein Hilfprogramm gemacht. Das erstellt die FileInstalls automazisch und man muss sie nur noch in seon Script einfügen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <file.au3>
    #include <Array.au3>
    Dim $array[33][2] = [['Macros for "All User" data. Most values are read from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion'], _
    ['@AppDataCommonDir', 'path to Application Data '], _
    ['@DesktopCommonDir', 'path to Desktop '], _
    ['@DocumentsCommonDir', 'path to Documents '], _
    ['@FavoritesCommonDir', 'path to Favorites '], _
    ['@ProgramsCommonDir', "path to Start Menu's Programs folder "], _
    ['@StartMenuCommonDir', 'path to Start Menu folder '], _
    ['@StartupCommonDir', 'path to Startup folder '], _
    [' '], _
    ['Macros for Current User data. Most values are read from HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion '], _
    ['@AppDataDir', "path to current user's Application Data "], _
    ['@DesktopDir', "path to current user's Desktop "], _
    ['@MyDocumentsDir', 'path to My Documents target '], _
    ['@FavoritesDir', "path to current user's Favorites "], _
    ['@ProgramsDir', "path to current user's Programs (folder on Start Menu) "], _
    ['@StartMenuDir', "path to current user's Start Menu "], _
    ['@StartupDir', "current user's Startup folder "], _
    ['@UserProfileDir', "Path to current user's Profile folder. "], _
    [''], _
    ['Other macros for the computer system: '], _
    ['@HomeDrive', "Drive letter of drive containing current user's home directory. "], _
    ['@HomePath', "Directory part of current user's home directory. To get the full path, use in conjunction with @HomeDrive. "], _
    ['@ProgramFilesDir', 'path to Program Files folder '], _
    ['@CommonFilesDir', 'path to Common Files folder '], _
    ['@WindowsDir', 'path to Windows folder '], _
    ['@SystemDir', "path to Windows' System (or System32) folder "], _
    ['@TempDir', 'path to the temporary files folder ']]

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("FolderInstall-Creator", 517, 439, 193, 125)
    $Input1 = GUICtrlCreateInput("", 32, 32, 401, 21)
    $Input2 = GUICtrlCreateInput("", 32, 72, 401, 21)
    $Button1 = GUICtrlCreateButton("...", 440, 32, 49, 25, 0)
    $Button2 = GUICtrlCreateButton("Macros", 440, 72, 49, 25, 0)
    $Button3 = GUICtrlCreateButton("Generate", 96, 120, 305, 41, 0)
    $check1 = GUICtrlCreateCheckbox("Overwrite",3,3,100,20)
    $Edit1 = GUICtrlCreateEdit("", 24, 176, 457, 249)
    GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $folder = FileSelectFolder("Source wählen","")
    If $folder <> "" Then GUICtrlSetData($Input1,$folder)
    Case $Button2
    _ArrayDisplay($array,"Help - Macro Description")
    Case $Button3
    GUICtrlSetData($Edit1,FileInstallFolder(GUICtrlRead($Input1),GUICtrlRead($Input2),BitAND(GUICtrlRead($check1),$GUI_CHECKED)))
    Case $Edit1
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func FileInstallFolder($from, $to, $overwrite)
    If StringRight($from, 1) <> "\" Then
    $from = $from&"\"
    EndIf
    If StringRight($to, 1) <> "\" Then
    $to = $to&"\"
    EndIf
    Local $files = _FileListToArray($from, "*", 1)
    Select
    Case @error = 1
    SetError(1)
    Return(0)
    Case @error = 2
    SetError(2)
    Return(0)
    Case @error = 3
    SetError(3)
    Return(0)
    Case @error = 4
    SetError(4)
    Return(0)
    Case Else
    $dir = DirCreate($to)
    If $dir = 0 Then
    SetError(5)
    Return(0)
    EndIf
    Local $installs = "Local $folderinstallerrors = 0" & @CRLF
    For $i = 1 To $files[0]
    $installs &= " $install = FileInstall(" & $from&$files[$i] & ", " & $to&$files[$i] & ", " & $overwrite & ")" & @CRLF & _
    " If $install = 0 Then $folderinstallerrors += 1" & @CRLF
    Next
    $installs &= "If $folderinstallerrors > 1 Then" &@CRLF& " ;Your error-handling here!" & @CRLF & "EndIf" & @CRLF
    SetError(0)
    Return $installs
    EndSelect
    EndFunc ;==>FileInstallFolder

    [/autoit]
  • auch wenns schon Uhr alt ist, is mir ein bug aufgefallen, den ich hiermit behebe, damit ihn andere Leute nicht selber finden müssen. bei der Versoin über dem beitrag hier fehlen bei den Generierten Fileinstalls die ". hab diese jetzt eingeführt, nun kann man den Text 1:1 ins script einfügen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <file.au3>
    #include <Array.au3>
    Dim $array[33][2] = [['Macros for "All User" data. Most values are read from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion'], _
    ['@AppDataCommonDir', 'path to Application Data '], _
    ['@DesktopCommonDir', 'path to Desktop '], _
    ['@DocumentsCommonDir', 'path to Documents '], _
    ['@FavoritesCommonDir', 'path to Favorites '], _
    ['@ProgramsCommonDir', "path to Start Menu's Programs folder "], _
    ['@StartMenuCommonDir', 'path to Start Menu folder '], _
    ['@StartupCommonDir', 'path to Startup folder '], _
    [' '], _
    ['Macros for Current User data. Most values are read from HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion '], _
    ['@AppDataDir', "path to current user's Application Data "], _
    ['@DesktopDir', "path to current user's Desktop "], _
    ['@MyDocumentsDir', 'path to My Documents target '], _
    ['@FavoritesDir', "path to current user's Favorites "], _
    ['@ProgramsDir', "path to current user's Programs (folder on Start Menu) "], _
    ['@StartMenuDir', "path to current user's Start Menu "], _
    ['@StartupDir', "current user's Startup folder "], _
    ['@UserProfileDir', "Path to current user's Profile folder. "], _
    [''], _
    ['Other macros for the computer system: '], _
    ['@HomeDrive', "Drive letter of drive containing current user's home directory. "], _
    ['@HomePath', "Directory part of current user's home directory. To get the full path, use in conjunction with @HomeDrive. "], _
    ['@ProgramFilesDir', 'path to Program Files folder '], _
    ['@CommonFilesDir', 'path to Common Files folder '], _
    ['@WindowsDir', 'path to Windows folder '], _
    ['@SystemDir', "path to Windows' System (or System32) folder "], _
    ['@TempDir', 'path to the temporary files folder ']]

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("FolderInstall-Creator", 517, 439, 193, 125)
    $Input1 = GUICtrlCreateInput("", 32, 32, 401, 21)
    $Input2 = GUICtrlCreateInput("", 32, 72, 401, 21)
    $Button1 = GUICtrlCreateButton("...", 440, 32, 49, 25, 0)
    $Button2 = GUICtrlCreateButton("Macros", 440, 72, 49, 25, 0)
    $Button3 = GUICtrlCreateButton("Generate", 96, 120, 305, 41, 0)
    $check1 = GUICtrlCreateCheckbox("Overwrite",3,3,100,20)
    $Edit1 = GUICtrlCreateEdit("", 24, 176, 457, 249)
    GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $folder = FileSelectFolder("Source wählen","")
    If $folder <> "" Then GUICtrlSetData($Input1,$folder)
    Case $Button2
    _ArrayDisplay($array,"Help - Macro Description")
    Case $Button3
    GUICtrlSetData($Edit1,FileInstallFolder(GUICtrlRead($Input1),GUICtrlRead($Input2),BitAND(GUICtrlRead($check1),$GUI_CHECKED)))
    Case $Edit1
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func FileInstallFolder($from, $to, $overwrite)
    If StringRight($from, 1) <> "\" Then
    $from = $from&"\"
    EndIf
    If StringRight($to, 1) <> "\" Then
    $to = $to&"\"
    EndIf
    Local $files = _FileListToArray($from, "*", 1)
    Select
    Case @error = 1
    SetError(1)
    Return(0)
    Case @error = 2
    SetError(2)
    Return(0)
    Case @error = 3
    SetError(3)
    Return(0)
    Case @error = 4
    SetError(4)
    Return(0)
    Case Else
    $dir = DirCreate($to)
    If $dir = 0 Then
    SetError(5)
    Return(0)
    EndIf
    Local $installs = "Local $folderinstallerrors = 0" & @CRLF
    For $i = 1 To $files[0]
    $installs &= " $install = FileInstall('" & $from&$files[$i] & "',' " & $to&$files[$i] & "', " & $overwrite & ")" & @CRLF & _
    " If $install = 0 Then $folderinstallerrors += 1" & @CRLF
    Next
    $installs &= "If $folderinstallerrors > 1 Then" &@CRLF& " ;Your error-handling here!" & @CRLF & "EndIf" & @CRLF
    SetError(0)
    Return $installs
    EndSelect
    EndFunc ;==>FileInstallFolder

    [/autoit]


    nebenbei, find ich es toll, dass hier bereits ein generator da war, hätt ihn sonst selber schreiben müssen ;)