ClickOnce-Voraussetzung : Fehler: veröffentlicht installer ist beschädigt
Ich habe eine benutzerdefinierte setup-Paket installieren Schriftarten auf einem client-Rechner im Einsatz, um die Voraussetzungen Ordner unter C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\FontsInstaller
. Alles in Ordnung mit Referenz als Voraussetzung in Visual Studio 2010 und ich bin in der Lage, um die Anwendung zu veröffentlichen, ohne Frage.
Den client auf der anderen Seite wird ein Fehler während der Hash-Prüfung:
Überprüfen der Datei-hash
Fehlermeldung: Setup hat festgestellt, dass die Datei 'C:\Users\RMORAN~1\AppData\Local\Temp\VSD4684.tmp\FontsInstaller\fontsinstaller.msi' hat sich entweder geändert, da es ursprünglich veröffentlicht oder werden möglicherweise beschädigt.
Habe ich versucht, einschließlich der hash und ohne es mit der Bootstrapper Manifest Generator und ich bekomme immer das gleiche Ergebnis auf dem client. Wird die Datei sofort gelöscht (aus Sicherheitsgründen), sobald es fehlschlägt, hash-Prüfung.
Nun habe ich gefunden, Microsoft Connect-bug-report sagen:
"Ich habe einen benutzerdefinierten bootstrapper package installiert als eine Voraussetzung für meine Anwendung. Wenn ich bauen diese auf einem system, auf dem Visual Studio 2012 installiert, die installation schlägt fehl mit der folgenden Fehlermeldung:
Setup hat festgestellt, dass die Datei '...' hat sich entweder geändert, da es ursprünglich veröffentlicht oder werden möglicherweise beschädigt.
Baue ich in Visual Studio 2010, keine änderungen an dem Paket oder Projekte. Wenn Visual Studio 2012 nicht installiert ist, funktioniert dies wie erwartet."
Ich habe versucht, den Bau dieser installer auf einem anderen Arbeitsplatz ohne VS2012 installiert, und es geht den hash-Validierung auf dem client (ich lief in einer Signatur-Problem, aber das ist eine andere Geschichte). Es ist wirklich ein problem mit der build-Maschine mit VS2012, nicht auf dem client, als das Paket auf meinem ursprünglichen Arbeitsplatz auch nicht auf die Maschine, die keinen VS2012.
Hat sonst noch jemand erlebt dieses Problem, wenn ja, haben Sie fand einen workaround, außerdem nicht mit VS2012 installiert?
- Gleiche Problem! nach der Installation von vs2012 meine benutzerdefinierte bootstrapper-Pakete nicht installieren möchten, die mit clickonce. Haben Sie Sie gelöst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzte ich ein Werkzeug zur reflektion zu suchen, bei der bootstrapper-generation MSBuild-Aufgabe (auf eine Maschine mit .NET 4.5 installiert sein) und festgestellt, dass Sie vermehrt die
product.xml
Datei<PackageFile />
Elemente. Insbesondere versucht er zu berechnen, einen öffentlichen Schlüssel aus einer Datei. Wenn er keine finden kann, vergleicht er die Taste mit dem Wert desPublicKey
Attribut. Wenn die Werte unterschiedlich sind, strahlt es eine Warnung, in beiden Fällen aber hält es den Wert nur berechnet wird.Wenn es nicht ermitteln konnte, der einen öffentlichen Schlüssel, es berechnet dann einen SHA256-hash der Datei und führt einen ähnlichen Vergleich mit dem Wert der
Hash
Attribut, emittiert eine Warnung, wenn Sie anders sind, und der Wert derHash
Attribut mit dem berechneten Wert.Können Sie bestätigen diese Ergebnisse, indem er die
SETUPCFG
Ressource aus dem daraus resultierendensetup.exe
; es ist eine text-version einer Zusammenführung derproduct.xml
- Dateien.Sowieso, daran erinnern, wie ich sagte, es berechnet einen SHA256-hash der Dateien, wenn Sie es nicht finden konnten, einen öffentlichen Schlüssel? Die Dokumentation für die <PackageFiles> - Element (Bootstrapper) sagt der Wert der
Hash
- Attribut sollte einen SHA1-hash.Ich war nicht in der Lage zu überprüfen, welche der SHA1-oder SHA256-die daraus resultierende
setup.exe
verwendet, um zu überprüfen, den Wert derHash
- Attribut (es ist nicht verwalteter code, und ich konnte nicht finden, dass die Symbole für Sie), aber lassen Sie die Aufzeichnung zeigen, dass ein ähnlicher Blick auf die .NET 4.0-version der bootstrapper generator MSBuild-Aufgabe zeigt, daß es tatsächlich mit dem SHA1-Algorithmus für die Berechnung der Wert derHash
- Attribut, so dass durch Abzug können wir sagensetup.bin
(zumindest die, die aus der Windows SDK v7.0A) ist mit SHA1. Ich bin mir ziemlich sicher, ich habe versucht mit dersetup.bin
aus dem Windows SDK v8.0A und ich habe die gleiche (falsche) Ergebnisse. (Man könnte dies bestätigen, indem Sie kopieren diesetup.bin
von der v8.0A-SDK .NET 4.0-nur die Maschine und sehen, ob die daraus resultierendensetup.exe
installieren können einen benutzerdefinierten bootstrapper package mit hash-basierte Verifizierung)So, wenn hash-basierten Nachweis ist gebrochen in der setup-bootstrapper, können wir zumindest verwenden den öffentlichen Schlüssel (Zertifikat-basierte) Prüfung statt. Die gute Nachricht ist, dass der bootstrapper-generator automatisch zu starten, verwenden diesen Mechanismus, wenn es in der Lage war, extrahiert den öffentlichen Schlüssel des Zertifikats aus der Paket-Datei. Die schlechte Nachricht ist, dass dies bedeutet jedes Paket Datei muss signiert werden, mit
signtool.exe
und eine gültige code-signing-Zertifikat (was nicht jeder haben ein code-signing-Zertifikat herumliegen, obwohl, wenn Sie tun, klicken Sie auf-wenn Sie könnten...).Einmal ich habe die package-Dateien, die von unserer benutzerdefinierten bootstrapper, hörte ich immer das die installation Fehler zur Laufzeit, wenn ich baute das Projekt mit Hilfe einer Maschine, der das hatte .NET 4.5 installiert, während immer noch gültiges bootstrapper bei der Verwendung einer Maschine, die nicht haben .NET 4.5 installiert.
tl;dr: Melden Sie Ihr package-Dateien mit einem code-signing-Zertifikat zu vermeiden, einen Mangel eingeführt .NET 4.5.
(.msi)
mit dem gleichen Zertifikat ich verwenden, um Zeichen, die auf einmal-Anwendung. Es wurde erfolgreich angemeldet. Dann erstellt ein bootstrap manifest für das. Ich bin noch immer Fehlerfile XYZ.msi changed since it was initially published or may be corrupt
Im log sehe ich Fehler tritt nur nachVerifying file hash
. Die Anwendung von bootstrap-perfekt funktionierte, bevor ich installiert.net 4
während der InstallationVS2012
. Irgendwelche Ideen?win 7
Maschine und offenbar mit dem gleichen signierten Paket und der Fehler geändertWinVerifyTrust returned -2146762487 File not trusted Error: Setup has detected that the publisher of file <My custom package> cannot be verified.
Dieser Fehler ist nur die auf der Maschine meine Erklärung, die ich unterschrieben, das Paket ist nicht installiert. Aber ich kann nicht gehen um mit der Installation dieses Zertifikats auf 200 MaschinenMemory Management Console
und Zertifikat manuell hinzufügenMüssen Sie ändern
GenerateBootstrapper Path
aus:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper
zu
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper
Müssen Sie ändern GenerateBootstrapper Pfad aus:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper
zu
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper
und kopieren Sie die msi-Pakete (die Sie verwenden möchten)
aus C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper
zu C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper