none
Probleme mit Zertifikat in ClickOnce - Zertifikatsverlängerung mit "RenewCert" klappt nicht RRS feed

  • Question

  • Ich habe Problem mit einem abgelaufenen Testzertifikat, das ich über ClickOnce erstellen lassen habe (habe es dort erstellen lassen).
    Nun ist es abgelaufen, an allen Maschinen müßte ich die Applikatiion neu installieren, weil das autoupdate nicht mehr funktioniert. Jetzt wollte ich das alte Zertifikat verlängern. Geht aber nicht mit dem "RenewCert.exe".
    Ich bekomme folgende Fehlermeldung:

    The application has failed to start because its side-by-side configuration is in
    correct. Please see the application event log or use the command-line sxstrace.e
    xe tool for more detail.



    1. Zum einen

    Habe mit sxstrace die Logmeldung aufgenommen, da stehen aber nur 4 Zeilen drin, und auch nicht das etwas fehlt.

    Flags = 0
    ProcessorArchitecture = Wow32
    CultureFallBacks = en-US;en
    ManifestPath = c:\Ablageordner\Firmenintern\Projekte\Signaturerstellung\Renewcert.exe
    AssemblyDirectory = c:\Ablageordner\Firmenintern\Projekte\Signaturerstellung\
    Application Config File =

    Das kann wohl auch nicht sein, oder? Ich habe alle EXE-Dateien die ich in der Kommandozeile brauche in ein separates Verzeichnis kopiert, auch das alte Zertifikat. Kann damit aber nichts zu tun haben, oder?

    Wenn ich im Ereignisprotokoll nachsehe, finde ich die Meldung:


    Activation context generation failed for "C:\Ablageordner\Firmenintern\Projekte\Signaturerstellung\Renewcert_org.exe". Dependent Assembly Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762" could not be found. Please use sxstrace.exe for detailed diagnosis.



    Ich habe schon gegoogelt und die vcredist_x86.exe und x64 in 2005 und 2008 Verson installiert, ohne Erfolg.

    Ich habe aber immer noch diesen side-by-side - Fehler.
    Hat jemand eine Lösung dafür?

    Ich denke die VC80.Debug - DLL fehlt. Ich habe aber schon hier nachgesehen:

    DLL's sifde by side

    und diese aus dem SysWOW64 in Windows\system32 kopiert, leider ohne Erfolg. Ich bekommme noch die gleichen Fehlermeldungen.

    Wie komme ich nuin weiter?

    1. Warum bekomme ich bei sxstrace nicht mehr Infos?
    2. Wie bekomme ich es hin, das alle DLL's dort sind wo sie hingehören?

    Ich wäre sehr dankbar für die Hilfe.


    oema von MSDN

    Wednesday, July 16, 2014 4:52 AM

All replies

  • Hallo Oema,

    Zum Ablauf des Zertifakts siehe (falls nicht bereits durchgearbeitet):

    Certificate Expiration in ClickOnce Deployment

    Was RenewCert angeht:

    Die VC 2005 Debug DLLs finden sich in keinem Redistributable, da sie ausschließlich für Entwicklungszwecke gedacht sind (waren) und nur die Release Versionen verteilt werden[1]. Zur Diagnose siehe Diagnosing SideBySide failures - dort wird auch die Debug Version als Problemfall herangezogen.

    Ich weiß nun nicht, welche Version von RenewCert Dir unter die Finger gekommen ist, Du solltest aber eine im Release-Modus kompilierte verwenden. Ggf. kompiliere die von http://may.be/renewcert/ selbst.

    Gruß Elmar

    [1] Deine Kopieroperation nach System32 ist fehl am Platze, bitte mache das sofort rückgängig. Eine x86 DLL (32 Bit) gehört nicht in das System32 Verzeichnis (x64 - 64 Bit) eines 64-bit Windows.

    Wednesday, July 16, 2014 6:39 AM
    Answerer
  • Hallo Elmar, danke für deine Info. Es hat mir erst mal weitergeholfen, konnte das Zertifikat verlängern. Cool. Jetzt muss ich nur noch sehen, das mit ClickOnce alles klar geht.

    Was war mein Problem??? Ich war schon auf diesen Seiten, auch auf der http://may.be/renewcert/

    Doch leider habe ich dort die ausführbare Datei gezogen und verwendet. Und das ist das Problem. Dort wurde eine andere DLL verwendet. Jetzt habe ich das CPP-Projekt gezogen und im Debug-Modus kompiliert, die EXE verwendet und es geht. Das Release konnte ich allerdings nicht erstellen (15 Fehlermeldungen) mit VS2012.

    Also habe ich an den total falschen Schrauben gedreht, und das nicht nur ein paar Stunden, sondern schon 3 Tage. Aber supi, bin ein großer Schritt weiter.

    Werde heute abend weiter testen.


    oema von MSDN

    Wednesday, July 16, 2014 12:28 PM
  • Hallo oema,

    ich habe mir gerade mal die ZIP-Datei von runtergeladen.

    Die unresolved externals im Release-Modus liegen daran, dass der Autor die Crypt32.lib nicht unter Additional Dependencies eingetragen hat, beim Debug-Modus schon.

    Holt man das nach, klappt es auch im Release Modus.

    Gruß Elmar

    Wednesday, July 16, 2014 12:54 PM
    Answerer
  • Hallo Elmar, danke für die Infos. Es aht geklappt. Bei der einen Applikation habe ich in der xxx.Application  zwar den identischen "Public token" wie in der Vorgängerversion die ich veröffentlicht habe, aber die Prozessoearchitektur stand auf "MSIL" und jetzt im neuen auf "x86". Deswegen wird die neuen Applikation nicht installiert.

    MEine Frage: Ichstelle in der Anwendung wiedr auf "AnyCPU" um.  Dann sollte es wieder klappen, oder?

    Wo leigt eigentlich der Unterschied für "AnyCPU" und "X64" oder "X86". Ich meine klar, andere Prozessorarchitektur, aber warum gibt es dann "AnyCPU" wenn das doch kein Allheilmittel ist?


    oema von MSDN

    Thursday, July 17, 2014 2:36 PM
  • Hallo Oema,

    Ja, das Ändern der CPU-Zielplattform bedeutet bei Click Once, dass man die Anwendung neu installieren muss (und die alte vorher deinstallieren).

    Allheilmittel gab es niemals - nicht nur bei Software ;)

    AnyCPU passt den kompilierten Maschinencode der Betriebssystem-Plattform an, auf der das Programm ausgeführt wird - d. h. 64-Bit (x64) auf einem 64-Bit OS und 32-Bit (x86) auf einem 32-Bit System.

    Ein Vorteil ist, dass man keine zwei Kompilate erzeugen muss. Bei x86 kann der Code zwar auch unter 64-Bit ausgeführt werden, läuft aber unter einem Subsystem (WOW64) , was einen (kleinen) Umweg bedeutet. 64-Bit Code kann unter 32-Bit nicht ausgeführt werden.

    Damit AnyCPU funktioniert müssen alle Komponenten für die jeweilige Plattform verfügbar sein. Das gilt zwar für den Kern des .NET Frameworks und die Basis-Funktionen des Betriebssystem, die es nutzt, nicht aber unbedingt für zusätzliche (Dritt-Hersteller) Bibliotheken.

    Mehr dazu: AnyCPU Exes are usually more trouble than they're worth

    Wobei es Dir wenig hilft, denn wie gesagt, hast Du Dich bei Click Once einmal festgelegt, bedeutet eine Änderung im Nachhinein eine Neuinstallation.

    Gruß Elmar
    Thursday, July 17, 2014 7:17 PM
    Answerer