Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

C-Sharp - EXE -ERROR in Installshield CustomAction wegen abschließendem Backslash aus INSTALLDIR

Mitglied: mayho33

mayho33 (Level 2) - Jetzt verbinden

25.03.2020 um 14:05 Uhr, 184 Aufrufe, 5 Kommentare

Hallo @ All

Ich verwende eine selbst erstellte C#-exe (Konsole) in einer Installshield CustomAction.
Die exe liegt in SupportFiles [SUPPORTDIR] und ich spreche sie in einer Type 34 CA (Path referencing a directory) im Deferred Execution -Modus an.

Der Aufruf schaut so aus:
"[SUPPORTDIR]\meine.exe" "[INSTALLDIR]" -install

exemplarisch ausgeschrieben:
"C:\Users\MeinUser\AppData\Local\Temp\{GUID}\meine.exe" "C:\ProgramFiles\Meine Fonts\" -install

Ich bekomme darauf hin einen Error in meiner Exe. Sie kann den gegebenen Pfad (INSTALLDIR) nicht verarbeiten kann.

Der Fehler liegt am abschließenden "\" (Backslash) im Pfad, den Installshield leider nur so bereit stellt. Die 2 Argumente "[INSTALLDIR]" und -install werden wegen des abschließenden Backslash als ein einziges Argument erkannt:

genau so: C:\ProgramFiles\Meine Fonts\" -install

Den Fehler fange ich meiner MSI derzeit so ab, dass ich die Files in einem SubFolder (Component) ablege und in der CA so aufrufe:
"[SUPPORTDIR]\meine.exe" "[INSTALLDIR]Fonts" -install

Das ist aber nur ein Workarround.

Nun meine Frage:

Wie kann ich das im meiner Exe abfangen sodass die 2 Argumente auch als 2 Argumente erkannt werden trotz des angehängten Backslash? Ich hoffe, dass sich das vor dem Verarbeiten der Args in der MAIN schon abfangen lässt und nicht erst durch umständliches Aufdröseln in der MAIN.

Bin dankbar für jeden Hinweis!

Grüße!

Mayho
Mitglied: SlainteMhath
25.03.2020 um 15:06 Uhr
Moin,

was hintert dich in deiner Anwendung daran zu prüfen ob ein \ am Schluss steht und diesen dann ggfs. zu entfernen bevor du den Pfad verwendest?

lg,
Slainte
Bitte warten ..
Mitglied: mayho33
25.03.2020 um 15:44 Uhr
Zitat von SlainteMhath:

Moin,

was hintert dich in deiner Anwendung daran zu prüfen ob ein \ am Schluss steht und diesen dann ggfs. zu entfernen bevor du den Pfad verwendest?

Hi,

Ja genau der Umstand, dass die Arguments schon verarbeitet worden sind bevor sie in void Main(string[] args) angekommen sind.

Dann würde mir nur noch bleiben die Argumente aufzudröseln, quasi manuell zu trennen und wieder so zusammenzufügen, dass das ganze Sinn ergibt.

Will ich aber nicht. Wie ich oben schon geschrieben habe, suche ich nach einer Möglichkeit die Args vor der Verarbeitung zu korrigieren. Also wenn der String daher kommt und noch als solcher vorhanden ist.

Grüße!
Bitte warten ..
Mitglied: 143127
25.03.2020, aktualisiert um 15:56 Uhr
Zusätzlichen Backslash hinzufügen sollte reichen, dann ist das Anführungszeichen nicht mehr escaped und die Argumente sollten wieder einzeln übergeben werden.
"[SUPPORTDIR]\meine.exe" "[INSTALLDIR]\" -install
Bitte warten ..
Mitglied: mayho33
25.03.2020 um 16:29 Uhr
Zitat von 143127:

Zusätzlichen Backslash hinzufügen sollte reichen, dann ist das Anführungszeichen nicht mehr escaped und die Argumente sollten wieder einzeln übergeben werden.
"[SUPPORTDIR]\meine.exe" "[INSTALLDIR]\" -install


Danke @143127 !

Vereinfacht die Sache zwar ungemein in der CA, aber irgendwie knabbere ich doch noch am Code der Exe. Muss doch möglich sein das Escapen des fehlerhaften Arguments abzufangen ohne die []Args zu bearbeiten...oder nicht?

Ich würde es halt gerne wasserdicht haben. Ich bin nicht der einzige bei uns der MSIs bastelt.

Danke!
Bitte warten ..
Mitglied: 143127
25.03.2020, aktualisiert um 17:56 Uhr
Zitat von mayho33:
Vereinfacht die Sache zwar ungemein in der CA, aber irgendwie knabbere ich doch noch am Code der Exe. Muss doch möglich sein das Escapen des fehlerhaften Arguments abzufangen ohne die []Args zu bearbeiten...oder nicht?
Ich würde es halt gerne wasserdicht haben. Ich bin nicht der einzige bei uns der MSIs bastelt.
Dann stütze dich eben nicht auf das args[] Array sondern Parse den kompletten Argumente-String als ganzes via Regex mit Submatches, mach ich öfter so. Dann ist es egal ob die Argumente als ein einziges oder als mehrere Elemente vorliegen, dann ist das auch wasserdicht, "wenn" dein Regex es auch ist .
Bitte warten ..
Ähnliche Inhalte
Visual Studio
C Sharp - Runden
gelöst Frage von Cubic83Visual Studio5 Kommentare

Guten Morgen, ich habe ein Problem unter C# bei dem ich den Preis eines Artikels ohne Mehrwertsteuer berechnen muss. ...

C und C++
C sharp basics
Frage von OarmschC und C++1 Kommentar

servus. folgendes Problem kann im Visual Studio mit float keine Gleitkommazahlen darstellen. Erste Dezimalstelle rechts vom punkt wird sofort ...

C und C++
C-sharp Form buggt
gelöst Frage von YanmaiC und C++2 Kommentare

Hallo ihr Administratoren. Ich habe ein kleines Problem. Unszwar möchte ich eine Ordner von C# zu einem PHP Script ...

C und C++
C-sharp SearchPattern (Regex)
Frage von YanmaiC und C++6 Kommentare

Hallo ihr Administratoren, ich verwende ein AUtocpmpletemenu Plugin. Dort habe ich Snippets, die dann sozusagen completed werden. Beim erstellen ...

Neue Wissensbeiträge
Off Topic
3D-Drucker gegen Corona - helft mit!
Information von DerWoWusste vor 6 StundenOff Topic12 Kommentare

Unter vorigem Link sind Anleitungen, wie man sich mit seinem 3D-Drucker an der Produktion (Druck) von Bauteilen für Atemmasken ...

Instant Messaging

Die Kommunikations-App Zoom kommt aus der Kritik so schnell nicht mehr raus

Information von Frank vor 8 StundenInstant Messaging4 Kommentare

Ich würde Zoom ja gerne nutzen (das Featureset ist ziemlich gut) aber irgendwie hinterlassen die ganzen Nachrichten einen faden ...

Off Topic
Die Känguru-Chroniken - ab April im Streaming
Information von Frank vor 1 TagOff Topic2 Kommentare

Die Corona-Krise hat auch die Kinos zum Stillstand gebracht. Daher gehen einige Verleiher neue Wege und stellen ihre Filme ...

Windows Server

Update KB4541329 (März 2020) und Windows Server 2016 RDS 1609 Probleme

Information von System-Fehler vor 2 TagenWindows Server1 Kommentar

Hallo, hier zur Info und eventuelle Hilfe: Wir hatten folgende Fehler: Windows 2016 Datacenter 1609, hier als RDS Dienste ...

Heiß diskutierte Inhalte
Batch & Shell
Alle Dateien eines Typs in Unterordnern in ein anderes Verzeichnis kopieren, aber so, dass sie in einem einzigen Unterverzeichnis liegen
Frage von Julia1989Batch & Shell17 Kommentare

Hallo, ich habe folgendes Problem: Ich habe viele *.php dateien, diese liegen in jeweils verschiedenen Unternordnern also C:\PfadZumOberverzeichnis\{A bis ...

Internet Domänen
Subdomain auf subdomain bzw. dyndns mit port weiterleiten?
Frage von DynlaraBartisInternet Domänen15 Kommentare

hey ich habe einen server bei mir mit proxmox auf diesem habe ich vm´s im heimnetz habe ich eine ...

Windows 10
Über Remotedesktopverbindung erkennen, ob Monitor angeschaltet ist
Frage von Tomac84Windows 1013 Kommentare

Hallo Zusammen, Auf Grund der Krise arbeite ich vom Home Office aus. Ich melde mich per Remotedesktopverbindung an meinen ...

Off Topic
3D-Drucker gegen Corona - helft mit!
Information von DerWoWussteOff Topic12 Kommentare

Unter vorigem Link sind Anleitungen, wie man sich mit seinem 3D-Drucker an der Produktion (Druck) von Bauteilen für Atemmasken ...