Unterordner für mitgelieferte *.dlls erstellen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Unterordner für mitgelieferte *.dlls erstellen

    Hallo Gemeinde,
    ich habe folgenden Plan:
    Das erstellte Programm soll auf verschiedenen, auch nicht vernetzten, Rechnern benutzt werden. Da nicht jeder Benutzer auch die Rechte besitzt, um des Programm zu installieren, möchte ich des auf dem USB-Stick belassen und auch von dort starten. Ist im Prinzip kein Problem und geht auch. Nur muß der Nutzer die exe zwischen den mitgelieferten *.dlls und einer .dat für die Einstellngspeicherung herausfischen.
    Mein Wunsch wäre, diese Dateien, bis auf die exe in einen Unterordner zu stecken, so dass der Nutzer nur noch die exe sieht.
    Eine Verknüpfung funzt nicht, weil der Stick jedesmal nen neuen Laufwerksbuchstaben bekommt, was die Verknüpfung logischerweise ungültig macht.
    Ich habe jetzt 2 Möglichkeiten:
    A) Ich bringe das Programm dazu, die .dlls auch in dem Unterordner zu finden (Das wäre mein Favorit)
    B) Ich bastele mir eine 2. App, die über Application.StartupPath den aktuelle Pfad des Sticks ermittelt und dann die exe im Unterordner mit Process.Start startet.(Funzt, find ich aber nich so schön)
    C)... :|

    Für einen Schubs in die richtige Richtung wäre ich dankbar.

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Leg im Projekt einen Unterordner für die dlls an, dann sollte das Programm diese auch auf dem USB-Stick richtig finden.

    Ich werd das nachher noch prüfen, hab momentan gerade nicht so viel Zeit.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Wenn du einen Unterordner anlegst und dann in VB.NET den Pfad angibst, sollte er sie auch finden, warum auch nicht?

    VB.NET-Quellcode

    1. Dim pfadZuDlls As String = Path.Combine(Application.StartupPath, "DLLSubFolder")

    in "pfadZuDlls" wäre jetzt der Pfad zum Unterordner und wenn du jetzt eine DLL daraus laden willst dann musst du nur noch machen

    VB.NET-Quellcode

    1. Dim pfad As String = Path.Combine(pfadZuDlls, "dllName.dll")

    und schon hast du in "pfad" den Ordner mit samt der DLL.

    Wo ist dabei das Problem, oder habe ich dich falsch verstanden?

    lg.
    lg.

    LucaWelker

    LucaWelker schrieb:

    Wo ist dabei das Problem, oder habe ich dich falsch verstanden?
    Deine Codebeispiele sind mir schon klar. das wäre ja quasi Plan B ;)

    Das Problem liegt darin, dass die exe die .dlls in einem Unterordner nicht findet (sucht). Ich habe schon mit den Verweispfaden (Projekteinstellungen>Verweise) rumgespielt, aber komme nich klar. Beim Erstellen werden die dlls immer im Release auf gleicher Ebene wie die exe abgelegt.
    Die Anwendung hängt sich ja bereits bei den Imports auf, wenn die .dls nicht da liegen wo sie hingehören. Da kann ich im Code wohl nix machn. Wenn, denn gehts über die Projekteinstellungen oder so, vernmute ich.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ich verstehe dein Problem nicht ganz.

    Wieso eine zweite .exe? Das Programm um das es geht ist doch von dir geschrieben oder? Warum änderst du da den Pfad nicht.
    Application.StartupPath sollte auch den korrekten Pfad ausgeben wenn es auf derm Stick läuft. Andernfalls könntest du auch mit relativen Pfadangaben arbeiten.

    lg.
    lg.

    LucaWelker
    Ich glaub, wir reden aneinander vorbei. Ich möchte folgenden Aufbau realisieren:
    USB:\\MeineApp.exe
    USB:\\Unterordner\diverse.dll
    Jetzt soll mit Doppelklick auf die Exe die Anwendung laufen. Tutse aber nicht, weilse die *.dlls, welche sie benötigt im Unterordner nicht findet.
    Hieße das, dassich die .dlls zur Laufzeit aus diesem Unterordner laden muß? Ich hab kein Plan...
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Hallo Vatter,

    ich vermute du musst die Dll's irgendwo registrieren.

    Alle Standard Framework Dll's findet deine Anwendung ja auch.
    Diese liegen in System32\......

    EDIT:
    Hab da was zum Thema aus diesem Forum gefunden.

    Gruss

    mikeb69
    Hallo Mike,
    genau sowas habich befürchtet. (und es klingt eigentlich auch logisch)
    Also denn doch Plan B. Weil registrieren und installieren geht numa nur mit den entsprechenden Rechten. Sieht dann so aus:
    USB:\\Start.exe (ermittelt den aktuellen Pfad von sich selbst und startet MeineApp.exe)

    USB:\\Unterordner\MeineApp.exe (eigentliche Anwendung auf gleicher Ebene mit den .dlls
    USB:\\Unterordner\diverse.dll

    Ich danke Euch

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: