Applikation läuft nur auf Deutsch installierten PCs

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von icewather.

    Applikation läuft nur auf Deutsch installierten PCs

    Eine ganz grundsätzliche Frage: Ich habe eine BETA-Version einer Applikation veröffentlicht und stelle nun fest,
    dass diese nur auf PCs läuft, die eine deutschsprachige Windows-Installation aufweisen. Hat jemand dazu einen Link,
    Hinweis oder eigene Erfahrungen? Ich verwende Umlaute teilweise in Tabellen- und Feldnamen innerhalb der Datenbankstruktur,
    damit in Übersichtstabellen die Leserlichkeit besser ist. Doch ich verwende keine Variablen usw. mit Umlauten.
    Hat jemand einen Tipp, wie ich dieser Sache auf die Spur kommen könnte? Danke.

    icewather schrieb:

    dass diese nur auf PCs läuft, die eine deutschsprachige Windows-Installation aufweisen.
    Was ganz genau passiert bei anderen Sprachen?
    Finde jemand, der ein anderssprachiges Windows hat und teste dort.
    Alles andere wäre pure Annahmologie und Spekulatius.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für den Hinweis. Genau das habe ich gemacht - auf einem französisch installierten Windows.
    Es kommt eine Fehlermeldung nach der anderen und das Programm startet nicht. Ich kann die Kaskade
    von Meldungen hier veröffentlichen, weiss aber nicht, ob das besser wäre.
    Ich wollte hier im Forum einfach mal fragen: Hat jemand grundsätzliche Hinweise,
    worauf beim Programmierung für verschiedene Sprachen zwingend geachtet werden muss.

    icewather schrieb:

    Ich kann die Kaskade von Meldungen hier veröffentlichen, weiss aber nicht, ob das besser wäre.
    Minimum: Die erste, besser wäre es, Du machst eine Vor-Filterung und postest aussagekräftige Meldungen.
    ====
    Erstell von dem Programm eine Debug-Variante und kopiere auf den Fremdrechner die Exe(n), die DLLs sowie die kommunizierenden *.PDB-Dateien.
    Da sollten detailliertere Meldungen kommen, wo auch die betreffende Stelle in Deinem Quellcode ausgegeben wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Vermutlich kein Sprachenproblem, sondern ein Registrierungsproblem der DLLs

    Ok, nun bin ich endlich dazu gekommen, mit virtualbox von oracle (eine echt coole Freeware) zwei virtuelle Windows 7 Pro 64 zu installieren. Ich habe eine französische und schweizer-deutsche Installation gemacht. Doch siehe da: Es besteht kein Unterschied zwischen den Sprachinstallationen. Ich stelle fest, dass mein "Sprachenproblem" vermutlich gar keines ist, sondern eine ganz andere Ursache hat. Kann ich euch um einen Ratschlag bitten? - Zuerst schildere ich, was ich mache:
    1. ich erstelle ein Inno-Setup und gebe im Wesentlichen die Dateien mit, die VisualStudio 2017 im Verzeichnis <meine App>\bin\debug angibt - dazu gehören die Dateien adodb.dll und AxInterop.AcroPDFLib.dll (Inno-Setup-Script siehe Dateianhang)
    2. ich nehmen an, dass das VS2017-Setup diese beiden Dateien einbindet, weil diese im Net-Framework 4.5 nicht dabei sind.
    3. ich lerne vom Internet, dass adodb.dll von VS2017 mit kompiliert und auf meine Anwendung zugeschnitten wird (siehe: msdn.microsoft.com/de-de/library/aa720078(v=vs.71).aspx)
    4. nun denke ich mir: eine dll-Datei muss ich mit regxvr32 registrien, damit sie auf dem Zielcomputer verwendet werden kann. Doch ich kriege keine Registrierung hin, mit welchen Flags ich auch immer die Registrierung starte
    5. Fazit: Meine Applikation läuft auf dem Zielrechner nicht!
    6. Fehlermeldungen: Wenn ich adodb.dll nicht im Programmverzeichnis habe, kommt die Meldung, dass diese Datei fehlt. Wenn ich sie im Programmverzeichnis habe, kommt die Fehlermeldung dass eine Klasse nicht registriert ist. -> Die Fehlermeldungen hänge ich als Textdateien an.
    7. Folgende Lösung habe ich gefunden: Ich installiere die Datenbank-Engine von Microsoft auf dem Zielrechner (siehe meine Webseite: churchsoftware.ch/download1/), kopiere die beiden DLLs ohne Registrierung ins Programmverzeichnis meiner Applikation - siehe da, alles läuft einwandfrei.
    Doch das will ich unbedingt vermeiden. Benutzer sollten nicht zuerst die ganze DB-Engine installieren müssen, dass meine Applikation installierbar ist.
    Wie kriege ich das hin?
    • ​Welche System-Dateien muss ich in Inno-Setup zwingend mitgeben? Die Verweise der App sind hier im Dateianhang (alle nicht .Net-Framework Dateien) . z.B. denke ich mir, dass ich alle Office-Dateien nicht mitgeben muss, wenn auf dem Zielrechner Office installiert ist.
    • Wie kann ich DLLs registrieren, damit sie auf den Ziel-PCs lauffähig sind?
    Sorry, ich habe wirklich wenig Erfahrung und bin sehr dankbar um eure Hilfe! Vielen herzlichen Dank!
    Bilder
    • Verweise.jpg

      145,41 kB, 1.559×299, 62 mal angesehen
    Dateien
    Hallo

    icewather schrieb:

    Doch das will ich unbedingt vermeiden. Benutzer sollten nicht zuerst die ganze DB-Engine installieren müssen, dass meine Applikation installierbar ist.
    Wie kriege ich das hin?

    Lass Innosetup das ganze installieren. Wie ich mit 10 Sekunden Googeln herausgefunden habe ist der Schalter dafür /quiet.

    Dann installiert dir InnoSetup die Engine ohne das der User was davon mitbekommt und alle läuft laut deiner Beschreibung.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    icewather schrieb:

    Das Setup wird ja dauernd
    in neuen Versionen zum Download angeboten und die Datenbank-Engine sollte nicht jedes Mal neu installiert werden.

    Du musst eben deine Fantasie ein wenig spiel lassen.

    z.b. kannst du über WMI von InnoSetup prüfen lassen ob es Installiert ist, oder ob ein Registryschlüssel existiert, oder, oder.
    Ausserdem müsste man mal prüfen ob der Installer der Engine überhaupt mit dem schalter /quiet drüberbügeln würde, da die meissten Setups dann einfach abbrechen.

    Da musst du dich eben ein wenig Spielen.
    Du Entwickelst unter .Net 4.5. Was machst du wenn .Net 4.5 nicht installiert ist? Ist doch das selbe Spiel oder?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke Sascha,
    In meinem Inno-Setup findest du einen Code, mit dem ich .Net überprüfe. Nur funktioniert leider der Download und die anschliessende Installation nicht. Habe den Fehler noch nicht gefunden. Ich sage nun den Kunden, dass sie die Windows-Updates regelmässig machen müssen. Dann ist .Net 4.5 auf jedem Rechner drauf. Das setze ich für die Installation voraus. Das geht eigentlich ganz gut.
    Doch die AccessDataBaseEngine hat kaum jemand einfach so installiert. Habe mich mal ein wenig durch einige Foren gequält. Ich werde das vermutlich schon noch hinbekommen. Ich bin eher der Applikationsentwickler und habe nicht wirklich eine Ahnung vom "Unterbau". Das ist dann immer sehr aufwändig. Darum habe ich hier mal dazu geschrieben. Vielleicht hat jemand ja schon mal das Problem gelöst.
    Grüsse
    Beat