Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  vb.net: ClickOnce und Command

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  vb.net: ClickOnce und Command (1802 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 07. Okt. 2015 11:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Experts   

Mal wieder eine Frage:

Ich veröffentliche inzwischen praktisch alle meine betriebsintern genutzten Programme als ClickOnce-Anwendung. Das funktioniert super, Aktualisierungen werden sofort verteilt, ich brauche mir nicht mühsam ein Setup-Paket erstellen.

Es hat natürlich auch Einschränkungen, mit denen ich aber bisher gut leben kann.

Nun habe ich ein Problem:
Ich habe ein paar Programme, die je nach Anwendungsfall sozusagen in verschiedenen Modi starten sollen. Wenn der Anwender direkt die Exe-Datei starten würde, dann könnte ich das einfach über die Kommandozeile erledigen, indem ich im Programm die Start-Parameter auswerte (--> Command) und dann entsprechend darauf reagiere.

Bei der ClickOnce-Installation gibt's keine .exe-Datei, die ausführbaren Dateien sind irgendwo tief in %appdata% versteckt und der Pfad ändert sich mit jeder neuen Version, zu sehen ist nur der Programm-Link unter Start->Programme... Aber in diesem Link kann ich auch keine Parameter eintragen.

Im Moment behelfe ich mir damit, dass das Programm nicht direkt über diesen Link, sondern über eine Batch-Datei aufgerufen wird.
In der Batch-Datei wird eine temporäre Textdatei mit den entsprechenden Start-Parametern geschrieben, dann wird das Programm gestartet, das dann wiederum diese temporäre Textdatei auswertet.

Die Frage ist nun: Gibt es eine Möglichkeit, bei ClickOnce-Anwendungen die althergebrachten Kommandozeilenparameter zu nutzen?

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 07. Okt. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RSchulz
Ehrenmitglied V.I.P. h.c.
Head of CAD, Content & Collaboration / IT-Manager



Sehen Sie sich das Profil von RSchulz an!   Senden Sie eine Private Message an RSchulz  Schreiben Sie einen Gästebucheintrag für RSchulz

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 07. Okt. 2015 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus,

wieso setzt du denn nicht voraus, dass ohne Parameter = ClickOnce ist, wenn du ansonsten Parameter mitbekommst. Wobei ich den Unterschied aktuell noch nicht ganz verstehe. Wo liegen denn funktionell mal als Beispiel die Unterschiede bzw. was stört dich bei der Ausführung?

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 07. Okt. 2015 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich bekomme ja eben keine Parameter mit, da ich die nicht in der Kommandozeile übergeben kann.

Bei .exe-Dateien könnte ich diese Startparameter im Programm auswerten und entsprechend darauf reagieren.
Bei ClickOnce-Anwendungen kann ich das aber eben nicht.

Es gibt natürlich andere Wege, wie schon beschrieben.
Alle Beispiele habe ich bis heute per Batch-Datei gelöst, aber für die Zukunft suche ich einen Weg, die Kommandozeile zu nutzen- wenn's den gibt.
Oder ich könnte einen Parameter in der Registry verstecken, dann bin ich aber nicht mehr flexibel.
Am flexibelsten wäre das eben per Kommandozeile.

Beispiele:
Ich habe ein Programm zum Ausfüllen unseres Schriftkopfes, das ist so definiert, dass es 90% der Anwender in den unterschiedlichen Bereichen passt. Jetzt habe ich einen neuen Bereich dazu, der z.B. ein paar Felder mehr benötigt, andere dafür nicht.

Das könnte ich jetzt, wenn es sich um eine herkömmliche .exe-Datei handeln würde, einfach mit einem Parameter starten, z.B. "Schriftkopf.exe /sonder".
Oder in einem anderen Programm werden verschiedene Reiter einer TabPage ein- oder ausgeblendet. oder oder....

Anderes Beispiel:
Ich habe ein Programm, mit dem ich Dateien und Daten an SAP übergebe.
Im Standalone-Betrieb werde ich aufgefordert, die Datei auszuwählen und bestimmte Daten dazu einzugeben.

Dasselbe Programm starte ich aus SolidWorks heraus mit Parameter /SWX (der wird von der Batch-Datei in die Temp-Datei geschrieben).
Wenn dieser Parameter erkannt wird, dann wird die zu übergebende Datei aus SolidWorks automatisch erstellt und die erforderlichen Daten automatisch geschrieben, da muss ich dann nichts mehr eingeben.

------------------
Klaus

www.al-ko.com | mein Gästebuch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 778
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 21H1
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2022

erstellt am: 07. Okt. 2015 18:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus

https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/

Kleines Beispiel:

Code:
Public Sub main()
    Try
        If AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData IsNot Nothing Then
            Dim activationData As String() = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

            For Each sCommandLineArgs As String In activationData
                Select Case sCommandLineArgs.ToLower
                    Case "/d"
                        MessageBox.Show("/d parameter", "parameter", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Case "/a"
                        MessageBox.Show("/a parameter", "parameter", MessageBoxButtons.OK, MessageBoxIcon.Information)

                    Case Else
                        MessageBox.Show("other parameter" & Environment.NewLine & sCommandLineArgs.ToString, "parameter", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End Select
            Next
        Else
            MessageBox.Show("empty paramater", "parameter", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub


Ausführen mit Parameter

Code:
"%appdata%\Microsoft\Windows\Start Menu\Programs\[ProgrammName]\[ProgrammName].appref-ms" /d

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 08. Okt. 2015 09:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ahoi Andreas,
danke dir!

Das scheint grundsätzlich zu funktionieren und wäre genau das was ich will   

Jetzt habe ich damit nur ein weiteres Problem: Beim Debuggen in der Entwicklungsumgebung gibts bei
If AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData IsNot Nothing Then
immer einen Ausnahmefehler, der springt dann immer zum Catch-Block.
Darum habe ich
#If DEBUG Then
        Debug = True
#End If
vorangestellt, dein Block soll dann nur ausgeführt werden, wenn Debug=False.
Nur- irgendwas stimmt nicht, Debug ist auch True, wenn ich das außerhalb der IDE starte (Link, .exe-Datei)
      
Gibts da irgendwelche Schalter einzustellen, damit #If DEBUG richtig ausgewertet wird?

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 08. Okt. 2015 editiert.]

[Diese Nachricht wurde von KMassler am 08. Okt. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 778
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 21H1
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2022

erstellt am: 08. Okt. 2015 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus

Ich habe einmal ein neues Projekt erstellt, und da hatte ich den selben "Fehler".
Erst nachdem ich das erste Mal auf "Jetzt veröffentlichen" geklickt habe, ging das Debuggen.

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 08. Okt. 2015 13:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Andreas,
das habe ich schon öfter gemacht. Erstellt, veröffentlicht..egal.
Weder mit der .exe-Datei noch mit der veröffentlichten Anwendung erkennt der Blechdepp, dass ich nicht mehr debugge.
  
Und während dem Debuggen des Debuggens bekomme ich immer den Ausnahmefehler.

[Edit]
Ich habe noch einen Tipp gefunden, wonach DEBUG immer True ist, egal, ob in der IDE oder im erstellten Projekt, wenn bei Erstellung oder Ausführung in den Projekteinstellungen unter "Kompilieren" die Konfiguration auf Debug steht.
Aber ich konnte keinen Unterschied feststellen. Mehr noch: auch wenn ich die Konfiguration auf "Release" stelle und damit der Ausgabepfad auf bin\Release wechselt, wird trotzdem alles unter bin\Debug erstellt.
Seltsam...
[/Edit]

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 08. Okt. 2015 editiert.]

[Diese Nachricht wurde von KMassler am 08. Okt. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 778
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 21H1
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2022

erstellt am: 08. Okt. 2015 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus

Ich habe es nochmals geprüft.
Wenn ich im Register "Sicherheit" die ClickOnce-Sicherheitseinstellungen aktiviere, komm der Fehler nicht.

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 08. Okt. 2015 14:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Den habe ich immer aktiv.

Jetzt habe ich eine Möglichkeit gefunden, zu unterscheiden, ob das Programm in der IDE (Debugging) oder solo läuft:
Dank an Wael Dalloul bei StackOverflow
  

Aber: wenn ich die Exe-Datei ohne Parameter direkt starte (Debugging=false), dann wird der Block durchlaufen und der Fehler kommt trotzdem wieder.
Bei der Click-Once-Anwendung klappt's.
Jetzt müsste ich also zusätzlich noch unterscheiden, ob das Programm als ClickOnce-Anwendung läuft oder ob die Exe-Datei gestartet wurde...

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 08. Okt. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 26. Okt. 2015 14:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ok, soweit läufts.
Nun habe ich festgestellt, dass activationData nur den ersten Parameter enthält, egal wie viele Parameter in der Befehlszeile stehen.
Wenn das Programm z.B. aufgerufen wird mit
<ProgrammName>.appref-ms" /1 /2 /3
dann enthält activationData nur den Parameter /1

Für meinen Zweck tut's das, ich brauche im Moment nicht mehr, aber komisch ist das schon ...

------------------
Klaus

www.al-ko.com | mein Gästebuch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz