Einfaches Setup einer HTA Datei

  • Hallo, ich will eine einfaches Setup erstellen das folgendes erledigt:

    Kopieren der Quelldatei Systeminfo.hta in das Zielverzeichnis C:\Program Files\Common Files\PC-Info\SystemInfo

    Erstellung eines Shortcut auf dem Desktop für die Systeminfo.hta mit der Bezeichung PC-Info

    Hat as evlt. jemand schon so ähnlich verwendet?

  • Hallo,

    dein erwünschtes Vorgehen sollte mit folgenden AutoIt-Funktionen in wenigen Zeilen umzusetzen sein:

    1a) Datei installieren (in der AutoIt-EXE eingebunden)

    FileInstall

    1b) Alternativ nur die Datei kopieren, falls du das möchtest:

    FileCopy

    2) Shortcut erstellen:

    FileCreateShortcut

    Auf der jeweiligen Hilfeseite findest du neben der Erklärung unten auch immer ein Beispiel, wie der Befehl genutzt werden kann.

    Viele Grüße

    Xenon

  • #include <FileConstants.au3>

    #include <MsgBoxConstants.au3>

    #include <WinAPIFiles.au3>

    Local $bFileInstall = True ; Auf True ändern und die Pfade unten anpassen.

    ; Dies installiert die Datei C:\SystemInfo.hta in den Skriptordner.

    If $bFileInstall Then FileInstall("C:\SystemInfo.hta", @CommonFilesDir & "\ZDV\SystemInfo\SystemInfo.hta")

    funktioniert nicht! Was ist falsch?

  • Nachtrag zu Makros :

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • funktioniert nicht! Was ist falsch?

    Prüfe mal Deine Pfade. Das Zielverzeichnis muss bereits bestehen bevor die Funktion aufgerufen wird !

    Mein Test mit :

    AutoIt
    Local $bFileInstall = True
    If $bFileInstall Then FileInstall("C:\Projekte\Testprogramme\Test.exe", @ScriptDir & "\backup\", 1)

    funktioniert.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Es sieht so aus als ob man kein Makro hat für das Verzeichnis ("C:\Program Files\Common Files").

    Kann ich eine eigenes Anlegen wie ProgramFiles=C:\Program Files (ist bei uns so definiert)?

  • Dann kannst du an allen möglichen Stellen in deinem Script die Variable $sPfad genauso verwenden wie ein Makro, ohne das es eines ist, aber die gleiche Funktionalität bietet.

    Für den Zielpfad ist das ok, aber Vorsicht beim Quellpfad der Funktion FileInstall, siehe :

    Parameter

    source Der Quellpfad der Datei, die eingebunden und kompiliert werden soll. Dieser muss ein reiner String sein; er kann keine Variable oder das Ergebnis eines Funktionsaufrufes sein. Es kann ein relativer Pfad (man verwendet .\ oder ..\ in dem Pfad) zu der Quelldatei (.au3) sein.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich denke das auch folgende Sätze wichtig sind, da sie auch erklären warum das so ist:

    Zitat

    Die Funktion FileInstall() ist dazu gedacht, Dateien in kompilierte AutoIt-Skripte einzubinden.

    ...

    Die Datei muss während dem kompilieren gefunden werden.

    Fileinstall packt die Datei mit in die exe, weshalb eine Variable (bei der QUELLE) o.ä. hier nicht möglich ist (das Programm wird ja nicht ausgeführt, nur kompiliert).

    Beim Ziel kannst du die Variable jedoch nutzen.

    Für den Rest hat Lottich jedoch Recht. Anstatt einem Makro, kannst du zu beginn des Scriptes eine Globale Konstante (besser als Variable, da nicht veränderbar) definieren. z.B.

    AutoIt
    Global Const $ProgramFiles = 'C:\Program Files\'

    Tipp: Willst du das solche Konstanten in dern Vorschlägen immer oben angezeigt werden, setze ein Zeichen davor (Achtung: nicht alle funktionieren!).

    AutoIt
    ;folgendes müsste beides funktionieren:
    Global Const $$ProgramFiles = 'C:\Program Files\'
    Global Const $#ProgramFiles = 'C:\Program Files\'

    2 Mal editiert, zuletzt von Moombas (22. März 2021 um 14:07)

  • ah, okay. Aber dann verhält es sich bei nem makro doch genauso, oder nicht?!

    Wenn es um den Quellpfad von FileInstall geht, dann Ja.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Irgendwie fand ich den Funktionsnamen FileInstall schon immer leicht irreführend.

    Er dient, wie Moombas bereits schrieb, dazu, die Datei beim Kompilieren einzubinden, aber auch, um sie beim Ausführen des Skriptes in den angegebenen Zielpfad zu kopieren/extrahieren. Die Datei befindet sich also erst nach dem Aufruf von FileInstall im angegebenen Zielverzeichnis. Greift man im Skript vorher darauf zu, ist sie nocht nicht vorhanden.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Moombas : Hinweis

    Statt Deine Antwort (hier #12 ) nachträglich zu ergänzen, erstelle besser einen neuen Beitrag (außer ggf. bei Korrekturen). Verwende bei einer Editierung, die sich an einen User direkt richtet, aber zumindest ein raymccoy (Zitat von ihm ginge auch). Ansonsten bekommt der OP (soweit ich weiß) keine Benachrichtigung und könnte die Ergänzung übersehen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Das ist richtig. Wenn man aber darauf achtet, wann der betreffende User das letzte mal im Forum aktiv war, geht es auch so ;)

    "Gehen" geht vieles ;).

    Da aber auch andere Mitglieder und Gäste den Thread möglicherweise lesen halte ich es trotzdem für sinnvoll, neue Erkenntnisse auch in einen neuen Beitrag zu schreiben (kostet ja nichts). Zudem bleibt so die chronologische Reihenfolge gewahrt.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."