Erstelltes Programm nur exe auf anderen PC starten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von haiflosse1.

    Im Normalfall wird man einen Installer verwenden, welcher alle nötigen DLLs und Dateien ins Zielverzeichnis kopiert.

    Ich verlasse mich aber nicht immer darauf, dass die User die DLLs nicht anrühren (also löschen).
    Daher überprüfe ich bei Programmstart ob die Dateien vorhanden sind. Wenn nicht, werden Sie aus den Ressourcen genommen und als Datei gespeichert.

    VB.NET-Quellcode

    1. ​If Not File.Exists(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "WSMBT.dll")) Then
    2. IO.File.WriteAllBytes(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "WSMBT.dll"), My.Resources.WSMBT)
    3. End If


    Wenn Deine Anwendung jedoch keine separaten Dateien oder DLLs benötigt, dann kannst Du es direkt ans Ziel kopieren.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    dive26 schrieb:

    Ich verlasse mich aber nicht immer darauf, dass die User die DLLs nicht anrühren (also löschen).


    Wenn ein Kunde an den Dateien rumfummelt muss er sich nicht wundern wenn was nicht geht. Das würde ich so nicht mitmachen, wenn der Kunde dann nicht selbst neu installieren kann, lass dir die Dummheit durch einen Einsatz vor Ort bezahlen(oder Fernwartung), so lernt der Kunde nicht dran rumzufummeln wo er nichts dran zu suchen hat. Hört sich zwar krass an, aber du wirst sicher auch schon so einiges beim supporten erlebt haben, wo du dachtest, was ist denn nun los? Wie kann das denn sein? Hast evtl. sogar Zeit investiert um nach "nichts" zu suchen.
    Danke für die Antworten.
    Bei meinem Programm handelt es sich nur um die Eingabe eines Namens in einem Textfeld und wenn man auf einen Button klickt wird der Name zusammen mit dem Rechnernamen in eine txt Datei gespeichert.
    Hier der gesamte Code:

    Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. lblComputername.Text = System.Environment.MachineName
    3. End Sub
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. If Not IO.Directory.Exists(Environment.GetEnvironmentVariable("USERPROFILE") & "\computer\") Then
    6. ' Nein! Jetzt erstellen...
    7. Try
    8. IO.Directory.CreateDirectory(Environment.GetEnvironmentVariable("USERPROFILE") & "\computer\")
    9. ' Ordner wurde korrekt erstellt!
    10. Catch ex As Exception
    11. ' Ordner wurde nich erstellt
    12. End Try
    13. End If
    14. Using StrWriter As New IO.StreamWriter(Environment.GetEnvironmentVariable("USERPROFILE") & "\computer\" & System.Environment.MachineName & ".txt")
    15. StrWriter.WriteLine(System.Environment.MachineName & "(" & txtName.Text & ")")
    16. End Using
    17. Application.Exit()
    18. End Sub


    Wenn ich das Projekt erstelle werden folgende Dateien im bin Ordner erstellt:
    Anmeldung.deps.json
    Anmeldung.dll
    Anmeldung.exe
    Anmeldung.pdb
    Anmeldung.runtimeconfig.json

    Wenn ich am selben Computer dies verwenden möchte, muss ich immer alle diese Dateien mitkopieren.

    Auf einem anderen Computer habe ich festgestellt, dass ich trotz mitkopieren aller Dateien wenn ich die exe Datei starte eine Meldung bekomme:

    Quellcode

    1. You must install .NET Desktop Runtime to run this application.
    2. Architectur: x64
    3. App host version: 6.0.8
    4. Would ylu like to download it now?
    5. Lear about runtime installation:
    6. https://aka.msdotnet/app-launch-failed


    Wenn man im Fenster auf ja klickt wird die .NET Installation durchgeführt, aber idea wäre, wenn die .NET Desktop Runtime und alle notwendigen Dateien zusammen in der EXE zusammengepackt wären.

    Vielen Dank für eine weitere Hilfe.
    Bilder
    • exe.png

      79,01 kB, 1.032×514, 59 mal angesehen
    Schau mai unter dem Schlüsselwort "self contained" nach: Single-file deployment and executable

    Anmerkung:
    Das führt aber dazu, das du noch mehr Dateien mitschleppen musst, halt alle Abhängigkeiten die deine Anwendung hat.