none
Probleme beim veröffentlichen meines Projektes RRS feed

  • Frage

  • Hi Leute,

    ich habe in VS 2010 per rechtsklick auf mein Projekt und dann veröffentlichen, eine Setup Datei erstellt. Die installiert auf meinem Rechner das Programm fehlerfrei. Auf allen andern Rechnern leider nicht. Fehlermeldung:

    Eine Systemakualisierung ist erforderlich.

    Die Anwendung kann weder installiert noch gestartet werden. Die Anwendung erfordert, dass die Assembly MySql.dll Version 6.3.6.0 zuerst im globalen Assemblycache (GAC) installiert wird.

    Die Installation des MySQL Connectors/Net hat nichts geändert.

    Hat jemand eine Idee?

    Donnerstag, 23. Juni 2011 18:32

Alle Antworten

  • Hallo ColleMonster,

    dann installiert der MySQL Connector entweder die Assembly nicht, oder eine andere Indentität davon.

    Die Identität der Assembly setzt sich aus fünf Eigenschaften zusammen. Dem Namen der Assembly, der Version der Assembly, der Kultur, dem öffentlichen Schlüsseltoken und der Prozessorarchitektur.

    Es handelt sich grundsätzlich um eine andere Assembly, wenn sich eine dieser Eigenschaften geändert hat. Die Identität der Assembly wird über einen so genannten „starken Namen“ gesichert. Der starke Name wird durch die Signierung der Assembly mit einem kryptografischen Schlüssel erzeugt. Das öffentliche Schlüsseltoken ist der Public Key dieses kryptografischen Schlüssels. Es ist möglich eine Assembly durch Signierung mit unterschiedlichen Schlüsseln mehrfach im GAC zu installieren. Diese Assembly kann trotz gleichen Namens und Versionsnummer im GAC neben der ursprünglichen Assembly installiert werden. Auch die Installation von Ressourcen-Assemblies in anderen Kulturen (Lokalisierte Assemblies z. B. für die Kultur DE-Deutschland oder FR-Frankreich) wird durch diesen Mechanismus ermöglicht, da die Kultur (DE, FR) Teil der Identität der Assembly ist. Auch die Optimierung auf eine Plattform (z.B. x86, X64) ist auf dieser Basis möglich. Der GAC (Global Assembly Cache) ermöglicht somit die Systemweite Bereitstellung von Assemblies ohne Namenskonflikte bei den zugrundeliegenden Dateien (DLLs oder EXEs) und vermeidet somit die sogenannte "DLL-Hell".

    @Edit: Eigentlich müsstest du die Assembly mittels deines Setupprojektes in den GAC installieren können. Ansonsten musst du die DLL mittels GACUTIL.exe (Teil des .net SDK) in den GAC des Zielrechners installieren.

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Donnerstag, 23. Juni 2011 20:11
  • Hallo C.,

    • ... MySql.dll Version 6.3.6.0  ....

    wir hatten ja ein ähnliches Thema schon [hier]. Heisst das in der Fehlermeldung wirklich "MySql.dll" oder "MySql.Data.dll"? Ich gehe mal davon aus, dass es wie vorher das Windows Betriebssystem ist.
    Beachte, dass dieser Connector damals die Version 6.3.6.0 installierte, aber jetzt installiert der Download-Link die Version 6.3.7.0!
    Lösung wäre also u.a. beispielsweise, dass Dein Projekt auch diese 7er - Connector-Version benutzt (bzw. eben eine übereinstimmende).

    Andere Lösungen gehen über eine Umleitung in der Konfigurations-Datei oder Herausgeberrichtlinien-Dateien im GAC, oder eben die Installation der alten 6.3.6.0 Version im GAC des Zielrechners.


    ciao Frank


    Freitag, 24. Juni 2011 07:28
  • Ja es sollte "MySql.Data.dll" heißen. Die DLL ist doch aber im Setup mit eingebunden. Wieso brauche ich dann den Connector nochmal?

    Meine Software soll auf einen Rechner laufen, wo nur MySQL und mein Programm installiert sind. Ist das möglich oder brauche ich den Connector immer?

    Freitag, 24. Juni 2011 11:07
  • Hallo C.,

    • Ja es sollte "MySql.Data.dll" heißen. ...

    ok.

    • Die DLL ist doch aber im Setup mit eingebunden. ...

    ja, aber .NET sucht die Assembly auf dem Zielrechner im GAC und findet sie dort nicht, denn Du installierst sie wahrscheinlich nur ins Ausführungsverzeichnis!
    Hier eine Anleitung, wie man eine Assembly über ein Setup-Projekt in den GAC installiert:

    [Wie eine Assembly auf Target Computer global Assemblycache bereitgestellt]
    http://support.microsoft.com/kb/324168

    ....

    Zitat dort u.a.: "Klicken Sie mit der rechten Maustaste auf Dateisystem auf dem Zielcomputer, klicken Sie auf Besonderen Ordner hinzufügen und klicken Sie dann auf Cacheordner für globale Assembly."  etc.


    ciao Frank

    Freitag, 24. Juni 2011 12:00
  • Ich hatte die DLLs wohl doch nicht richtig eingebunden. Jetzt gibt es eine andere Fehlermeldung:

    Die Anwendung kann nicht gestartet werden. Wenden Sie sich an den Hersteller dieser Anwendung.

     

    INFO ZUR PLATTFORMVERSION
        Windows             : 6.0.6002.131072 (Win32NT)
        Common Language Runtime     : 4.0.30319.235
        System.Deployment.dll         : 4.0.30319.1 (RTMRel.030319-0100)
        clr.dll             : 4.0.30319.235 (RTMGDR.030319-2300)
        dfdll.dll             : 4.0.30319.1 (RTMRel.030319-0100)
        dfshim.dll             : 4.0.31106.0 (Main.031106-0000)

    QUELLEN
        Bereitstellungs-URL            : file:///D:/temp/noch%20ein%20Versuch/MySQL%20Datenbank%20Verwaltung%201.0.application
        Anwendungs-URL            : file:///D:/temp/noch%20ein%20Versuch/Application%20Files/MySQL%20Datenbank%20Verwaltung%201.0_1_0_0_0/MySQL%20Datenbank%20Verwaltung%201.0.exe.manifest

    IDENTITÄTEN
        Bereitstellungsidentität        : MySQL Datenbank Verwaltung 1.0.application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2e36172e8c0b41f2, processorArchitecture=x86
        Anwendungsidentität        : MySQL Datenbank Verwaltung 1.0.exe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2e36172e8c0b41f2, processorArchitecture=x86, type=win32

    ZUSAMMENFASSUNG FÜR ANWENDUNG
        * Installierbare Anwendung.

    FEHLERZUSAMMENFASSUNG
        Es folgt eine Zusammenfassung der Fehler. Details zu diesen Fehlern werden später im Protokoll aufgelistet.
        * Die Aktivierung von D:\temp\noch ein Versuch\MySQL Datenbank Verwaltung 1.0.application führte zu einer Ausnahme. Folgende Fehlermeldungen wurden entdeckt:
            + Die Laufzeit konnte nicht geladen werden. (Ausnahme von HRESULT: 0x80131700)

    FEHLERZUSAMMENFASSUNG FÜR DIE SPEICHERTRANSAKTION DER KOMPONENTE
        Es wurde kein Transaktionsfehler festgestellt.

    WARNUNGEN
        Während dieses Vorgangs gab es keine Warnungen.

    FORTSCHRITTSSTATUS DES VORGANGS
        * [24.06.2011 20:13:50] : Die Aktivierung von D:\temp\noch ein Versuch\MySQL Datenbank Verwaltung 1.0.application wurde gestartet.
        * [24.06.2011 20:13:50] : Das Verarbeiten des Bereitstellungsmanifestes wurde erfolgreich abgeschlossen.
        * [24.06.2011 20:13:50] : Die Installation der Anwendung wurde gestartet.
        * [24.06.2011 20:13:51] : Das Verarbeiten des Anwendungsmanifestes wurde erfolgreich abgeschlossen.
        * [24.06.2011 20:13:53] : Kompatible Laufzeitversion 4.0.30319 gefunden.
        * [24.06.2011 20:13:53] : Die Anforderung der Vertrauensstellung und die Ermittlung der Plattform sind abgeschlossen.
        * [24.06.2011 20:13:53] : Das Downloaden von Abonnementabhängigkeiten ist abgeschlossen.
        * [24.06.2011 20:13:53] : Das Ausführen des Commits für die gedownloadete Anwendung wurde gestartet.

    FEHLERDETAILS
        Folgende Fehler wurden bei diesem Vorgang entdeckt.
        * [24.06.2011 20:13:53] System.Runtime.InteropServices.COMException
            - Die Laufzeit konnte nicht geladen werden. (Ausnahme von HRESULT: 0x80131700)
            - Quelle: System.Deployment
            - Stapelüberwachung:
                bei System.Deployment.Application.NativeMethods.GetRequestedRuntimeInfo(String pExe, String pwszVersion, String pConfigurationFile, UInt32 startupFlags, UInt32 runtimeInfoFlags, StringBuilder pDirectory, UInt32 dwDirectory, UInt32& dwDirectoryLength, StringBuilder pVersion, UInt32 cchBuffer, UInt32& dwLength)
                bei System.Deployment.Application.Win32InterOp.SystemUtils.CheckSupportedImageAndCLRVersions(String path)
                bei System.Deployment.Application.SubscriptionStore.CheckApplicationPayload(CommitApplicationParams commitParams)
                bei System.Deployment.Application.SubscriptionStore.CommitApplication(SubscriptionState& subState, CommitApplicationParams commitParams)
                bei System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
                bei System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
                bei System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

    DETAILS ZUR SPEICHERTRANSAKTION DER KOMPONENTE
        Es sind keine Transaktionsinformationen verfügbar.


    Freitag, 24. Juni 2011 18:42