Fehler beim Veröffentlichen einer ClickOnce Anwendung in Visual Studio 2010 und der .NET Framework 4.5 mit benutzerdefinierten Voraussetzungen

Dieser Artikel enthält Informationen zum Beheben des Fehlers (Datei hat ... Geändert... oder möglicherweise beschädigt), wenn Sie eine ClickOnce Anwendung in Microsoft Visual Studio 2010 und der .NET Framework 4.5 oder höher veröffentlichen.

Ursprüngliche Produktversion:   Visual Studio Premium 2010, Visual Studio Professional 2010, Visual Studio Ultimate 2010, .NET Framework 4.5
Ursprüngliche KB-Nummer:   3072421

Problembeschreibung

Wenn Sie eine ClickOnce Anwendung mithilfe von Visual Studio 2010 auf einem Computer veröffentlichen, auf dem die .NET Framework 4.5, 4.5.1, 4.5.2 oder eine neuere Version installiert ist, werden die verteilbaren erforderlichen Pakete nicht ordnungsgemäß gepackt, wenn sie nicht signiert sind. Daher erhält der Benutzer die folgende Fehlermeldung, wenn Setup.exe ausgeführt wird:

Beim Installieren von Systemkomponenten für <Application_Name> ist ein Fehler aufgetreten. Das Setup kann erst fortgesetzt werden, wenn alle Systemkomponenten erfolgreich installiert wurden.
Setup hat festgestellt, dass sich die Datei seit der <path to a temporary location of the MSI file> ersten Veröffentlichung geändert hat oder beschädigt ist.
Weitere Informationen finden Sie in der <path to the Install.log file in the temporary directory under the user's profile> Setupprotokolldatei.

Darüber hinaus wird der folgende Eintrag in der Datei Install.log protokolliert, um anzugeben, dass die Hashüberprüfung für die nicht signierte Erforderliche-Datei fehlgeschlagen ist:

Überprüfen der Dateiintegrität von <path to a temporary location of the MSI file>
Überprüfen des Dateihashs
Fehler: Setup hat festgestellt, dass sich die Datei seit der <path to a temporary location of the MSI file> ersten Veröffentlichung geändert hat oder beschädigt ist.

Ursache

Dieses Problem tritt auf, da der Buildprozess den Digest der erforderlichen Datei mithilfe des SHA2-Hashalgorithmus generiert, wenn die erforderliche Datei verpackt wird. Setup.exe Datei versucht jedoch, den Digest mithilfe des SHA1-Algorithmus zu lesen. Daher tritt ein Konflikt zwischen den erwarteten Digests und den tatsächlichen Digests auf, und Setup.exe bestimmt, dass die .msi Datei fehlt oder beschädigt ist.

Lösung

Um dieses Problem zu beheben, stellen Sie sicher, dass die benutzerdefinierte Voraussetzungsdatei (.msi) signiert ist, damit der problematische Digest nicht generiert wird.

Alternativ können Sie Visual Studio 2012 oder eine höhere Version verwenden. In diesen Programmversionen ist dieses Problem nicht aufgetreten.

Weitere Informationen

Visual Studio 2010 führt MSBUILD-Aufgaben aus, die mit dem .NET Framework in derMicrosoft.Build.Tasks.v4.0.dllassembly verteilt werden. Wenn die .NET Framework 4.5 oder eine höhere Version auf dem Entwicklungscomputer installiert ist, generiert diese Buildaufgabe einen SHA2-Hash der erforderlichen Datei, wenn diese Datei nicht signiert ist. Während der Installation auf dem Computer des Benutzers kann dieser Hash nicht vom Bootstrappermodul (Setup.exe) überprüft werden, das von Visual Studio 2010 generiert wird.