Mit Visual Studio 2005 geschriebenes Programm gibt Side by Side Konflikt auf einigen Win7 Systemen trotz vcredist



  • Hallo,

    ja, zurzeit entwickle ich immernoch mit dem alten Zeug!

    Aber zu meiner Frage:
    Wir haben unsere 32 Bit Software bei einigen Kunden laufen und installieren hierzu auch immer das vcredist_x86.
    Es ist das neueste, das wir kriegen konnten, vom 14.05.2011, Version 2.0.50727.5672
    In letzter Zeit kommt es allerdings immer häufiger zu einem Side by Side Konflikt, wenn wir die Software dann
    starten wollen, trotz des installierten vcredist. Die Zielplattform ist dabei meist Win7, 32 und 64 Bit.

    Ich selbst entwickle unter Win7 64 Bit, also wie ein Grossteil unserer Zielplattformen, die Probleme machen.

    Aber wie ich sagte, das ist seit Kurzem.
    Ich habe festgestellt, dass zwischen einem noch funktionierenden und einem nicht mehr überall funktionierenden
    Programm, auf meinem Rechner Office 2013 installiert wurde. Einige andere Programme hatten auch noch dieses
    Installationsdatum vom Office, aber nichts aktiv installiertes. Eine Deinstallation dieser änderte allerdings nichts.

    In der Not habe ich meine alte XP Entwicklungsumgebung wieder aktiviert.
    Dort ergaben die unter Win7 neu erstellten Programme ebenfalls den Side by Side Konflikt, trotz installierter
    Entwicklungsumgebeung. Mit dieser konnte ich aber dann plötzlich wieder das Programm so erstellen,
    dass es auf den Problem-Systemen zum Laufen kam. Auch konnte ich feststellen, dass sich die exe-Dateien,
    die über das identische VS-Projekt einmal unter XP und einmal unter Win7 erstellt wurden, in tausenden kleiner
    Details beim Binär-Vergleich unterscheiden. (Ich traue mich nicht, mit diesem System zu experimentieren!)

    Dann wollte ich das Verhalten auf einem Win7 System reproduzieren.
    Habe Win7 auf einem alten Rechner installiert, allerdings auch die aktuellen Updates.
    Hier funktionierte aber die Variante mit dem vcredist!
    Ebenfalls funktionierte die Variante über ein msi-Setup des Programms, das die Abhängigkeiten enthielt.
    Also hier konnte ich das Verhalten nicht reproduzieren.
    Mir scheint, das Problem taucht bei älteren Systemen hauptsächlich auf?
    Die Variante "Setup.msi" meiner Software konnte ich auf einem Problem-System noch nicht ausprobieren!

    Kann mir bitte jemand dieses Verhalten erklären.
    Aber wichtiger noch: Wie komme ich zu einer überall funktionierenden Installation, ohne mein altes XP
    konsultieren zu müssen.

    Vielen Dank für Eure Hilfe.

    PS: natürlich plane ich, in absehbarer Zeit, auf das neueste VS umzusteigen.
    Vorerst wäre aber dies hier sehr wichtig.

    Aber was für Probleme handle ich mir mit VS2015 ein? Wenn der Kunde noch ein altes System hat?



  • Öffne die funktionierende EXE im Ressourcen-Editor und exportiere das Manifest. Das gleiche machst Du mit der nicht funktionierenden EXE. Jetzt kannst Du schon mal sehen, was anders ist. Ich vermute mal, dass Du auf einem System das letzte Service Pack fürs Studio installiert hast und auf dem anderen eben nicht. Nun fehlt für das ältere Compilat die entsprechende Publisher-Policy.

    Das Problem kannst Du aber sicher umschiffen, in dem Du auf diesen vcredist Krams verzichtest. Du hast doch Merge-Module passend zu Deiner Umgebung auf Deiner Kiste, zieh Dir diese in Dein MSI und fertig ist's.



  • Vielen Dank Mox für den Hinweis.
    Auf jeden Fall hab ich schon mal etwas dazugelernt.
    Ich werde damit mal etwas experimentieren.

    Ich dachte mir auch, dass es sicher sinnvoller ist, durch das Setup-Projekt die Abhängigkeiten herauszufinden, als pauschal das Redist draufzubügeln.
    Aber mit meinem Setup hatte ich noch nicht die Möglichkeit, dahingehend zu testen.


  • Mod



  • Danke Martin,

    so detailliert, wie es da beschrieben ist, hatte ich es natürlich noch nirgends gelesen.
    Hatte viel rumgesurft aber dieser Artikel ist mir entgangen.
    Ich denke, dass ich einiges davon kappiert habe. Danke.

    Über das Manifest habe ich einige Unterschiede gesehen:
    Redist hat Nr. 2.0.50727.5672
    XP-Compilat will CRT u. MFC Nr. 8.0.50727.762 (über Manifest, findet aber keine Merge Module)
    Win7 Compilat will Nr. 8.0.50727.6195 (Manifest u. Merge Module im Setup.msi)

    Was ich trotzdem merkwürdig finde ist das Verhalten meiner Test-Installation:
    Ein frisch installiertes Win7 Ultimate, allerdings mit den meisten aktuellen Updates dazu
    aber ohne jegliche zusätzliche Programme.

    Keine meiner beiden exe-Dateien war dort zunächst ausführbar.

    Mit dem Redistrib waren dann aber beide ausführbar (also die unter XP erstellte und die unter Win7 erstellte exe).
    Das hätte eigentlich nicht sein dürfen.

    Dann habe ich auf den Wiederherstellungspunkt zurückgesetzt.
    Beide waren wieder nicht ausführbar!
    Habe meine Setup.msi ausgeführt (enthält die Merge Module .6195).
    Danach waren aber auch wieder die beiden anderen exe-Dateien ausführbar.
    Das könnte ev. noch logisch sein, da die Merge Module mir neuer erscheinen. Na ja, könnte ...

    Und dann gibt es eben die Systeme, wo das XP-Compilat funktioniert aber das Win7-Compilat trotz dem Redist. nicht ... ?

    Aber auf so einem System muss ich meine Setup.msi erst noch ausprobieren!
    Ob ich es dann gänzlich verstehe???

    Auf jeden Fall vielen Dank
    Ihr ward eine Hilfe!
    Grüsse
    Helmut


  • Mod

    Installiere das letzte SP für Dein VS, dann werden auch die passenden Manifeste erzeugt.

    Ansonsten passe Deine Manifeste an!


Anmelden zum Antworten