2010-12-10 5 views
2

Ich habe ein Update auf .DLL von Drittanbietern, das auf den Computern meiner Kunden installiert werden muss. Wir verwenden derzeit automatisierte Installationen über MSI, die in Visual Studio 2010 erstellt werdenVisual Studio-Setup-Projekt - erzwingen Installation einer .DLL?

Leider wurde die dritte Partei .DLL falsch versioniert und die Dateiversion wurde nicht vom Anbieter erhöht (sie erhöhten nur die Assembly-Version). Der Drittanbieter ist Microsoft, also ist es nicht realistisch, auf das Problem zu warten. Wir müssen die neue .DLL jetzt und innerhalb eines MSI-Updates an die Leute bringen. Derzeit überschreibt MSI-Update nicht die .DLL

Gibt es eine Möglichkeit innerhalb VS2010-Setup-Projekt, eine .DLL überschreiben, auch wenn die Dateiversionen übereinstimmen?

Antwort

1

Wenn Sie bereit sind, msi postbuild zu tun Zwicken Sie die Dateitabelle treffen kann und tun „Version liegen“. Ein weiterer Gedanke ist, diese DLL nicht in Ihre Installation zu integrieren. Suchen Sie ein Installationsprogramm von Microsoft (falls vorhanden), das Sie in einen Bootstrapper einfügen oder ein eigenes Installationsprogramm erstellen können, und verwenden Sie AMUS anstelle von OMUS für die Versionsregeln.

+0

Kann die .DLL nicht in das Paket aufnehmen. Kein MSM, mit dem ich arbeiten kann und ich kann die Switch-Installationsparameter sowieso nicht ändern. Der Code für die automatische Aktualisierung wird bereits im Feld ausgeführt. Wenn es ausgeführt wird, wird es mit der Befehlszeile ausgeführt, die im Grunde eine stille Aktualisierung durchführt. Können Sie die "Version lügen" näher erläutern? – Igorek

+0

Version Lügen ist, wo Sie die Datei-Tabelle aktualisieren, um MSI zu glauben, dass es eine neuere Version hat, als es tatsächlich hat. Es gibt einige kleinere Probleme, aber im Grunde gibt es ein Always Overwrite für eine einzelne Komponente. Die richtige Lösung besteht darin, den richtigen SCM-Praktiken mit Ihren Ressourcen zu folgen (ja, traurig, dass es sich hier um Microsoft handelt). –

+0

Ich schätze die weitere Ausarbeitung, aber ich bin mir nicht sicher, wie ich das Problem angehen könnte, Versionen programmgesteuert zu wechseln. Google war nicht viel Hilfe. Kannst du einen Link mit einigen Anweisungen geben, wie man das machen könnte? Danke – Igorek

0

Kannst du nicht einfach die Datei auf dem Installationsprogramm als ‚Datei‘ hinzufügen und sie mit den anderen Dateien installieren? Legen Sie sie nicht als Projektausgabe oder eine der vordefinierten Installationsaktionen fest. Gehen Sie zum Dateiteil und klicken Sie mit der rechten Maustaste auf den Ordner "Anwendungsdateien" und sagen Sie> Datei hinzufügen. Navigieren Sie zu der gewünschten Datei und wählen Sie sie aus.

+0

Nein MSI hat einen Prozess namens Dateikalkulation, die als die Dateiversion (AssemblyFileVersion) nicht das AssemblyVersion-Attribut aussieht. Wenn die alte Version und die neue Version der DLL die gleiche Versionsnummer haben, überschreibt MSI sie nicht, auch wenn sie anders sind. –

+0

Selbst wenn Sie es ausdrücklich sagen, um die Datei zu kopieren? Sie könnten eine benutzerdefinierte Installer-Klasse erstellen, die DLL aus einem temporären Ordner kopieren, den das MSI erstellt, und dieses löschen, nachdem Sie es kopiert haben. Es bekommt jetzt dieses eklige Gefühl jetzt ..... –

+0

Ich habe versucht, die Datei in das Paket als eine normale Datei zu setzen und sie von den Ausgaben auszuschließen. Es wurde nicht über die ältere Version verteilt. – Igorek