Offline ClickOnce Anwendung mit Übergabeparametern starten

  • VB.NET
  • .NET (FX) 3.0–3.5

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

    Offline ClickOnce Anwendung mit Übergabeparametern starten

    Hallo Leute,

    folgendes Szenario:

    Ich habe eine Anwendung dessen Instalaltionsordner auf einem Netzwerklaufwerk liegt und die mittels ClickOnce bei den Usern installiert ist. Das funktioniert inkl. Updates alles prima.

    Jetzt gibt es die Anforderung, die Anwendung über einen Link in einer Email zu starten und direkt zu einem bestimmten Eintrag in der Anwendung zu springen.

    Das Programm per Link zu starten bekommen ich hin - ich verlinke einfach auf das Application Manifest auf dem Netzwerklaufwerk welches automatisch die Anwendung beim User startet.
    (der lokale Installationspfad ist ja generisch)
    Kann ich bei diesem Aufruf aber irgendwie noch Startparameter an die eigentliche Anwendung mitgeben? Oder gibt es eine alternative Vorgehensweise?

    Ich hoffe mein Vorhaben ist nachvollziehbar :rolleyes:

    Mfg Murdoc
    Gruß Murdoc
    Natürlich. Diesbezüglich gibt es die Methode: Environment.GetCommandLineArgs.
    Diese gibt dir einen String-Array mit den angegebenen Startparametern zurück. Mit diesen kannst du dann weiterarbeiten.

    VB.NET-Quellcode

    1. Dim arguments As String() = Environment.GetCommandLineArgs()


    Heißt du startest deine Anwendung z.B. mit Process.Start("c:\Test.exe -Parameter1"). Diesen musst du dann in der Anwendung selbst behandeln.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Das auswerten der übergebenen Paramter ist mir klar.

    Es geht um den Aufruf aus einer Email inklusive Übergabeparameter an das AppManifest. Der Aufruf erfolgt mittels Hyperlink.

    EDIT: Soll ich das Problem noch einmal spezifizieren?
    Gruß Murdoc

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Murdoc“ ()

    Mit WMI lassen sich unter anderem alle installierten Anwendungen auslesen:

    C#-Quellcode

    1. ManagementObjectCollection moReturn;
    2. ManagementObjectSearcher moSearch;
    3. moSearch = new ManagementObjectSearcher("Select * from Win32_Product");
    4. moReturn = moSearch.Get();
    5. foreach(ManagementObject mo in moReturn)
    6. {
    7. listBox1.Items.Add(mo["Name"].ToString());
    8. }


    Siehe diesbezüglich: Systeminformationen mit WMI auslesen ab .NET 3.0 oder früher
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Für alle die vielleicht auch so etwas brauchen - ich habe einen Workaround gefunden.

    RobinDotNet hat erläutert, wie man Parameter an die appref-ms Datei (Verknüpfung auf dem Desktop oder im Startmenü) übergeben kann. Dazu muss man per Environment Variable den Ort der Verknüpfung aufrufen.
    Problematisch ist das u.U. bei der Verwendung von unterschiedlichen Windows Versionen.

    Joel hat das Ganze noch etwas zusammen gefasst.

    Da mir der weg über eine Desktopverknüpfung zu unsicher war, habe ich etwas rumgespielt. Ich habe meine Desktopverknüpfung sprich die appref-ms auf ein Netzwerklaufwerk kopiert und bei verschiedenen Benutzern mit unterschiedlichen Windows Versionen sowie auch unterschiedlichen Programmversionen getestet - es funktioniert.

    Long story short - ich installiere meine Anwendung bei mir, lege die Appref-Ms auf ein Netzwerklaufwerk und kann für alle User diese Datei bspw. per Command mit Übergabeparametern aufrufen.
    Microsoft gibt allerdings keine Garantie dass sich die Datei nicht ändert - das heißt Anwendung auf eigene Gefahr. Nach meinen Erfahrungen ändert diese aber nur, wenn sich der Installationspfad ändert.
    Gruß Murdoc