Verhindern, dass ein Patch Zugriff auf die ursprüngliche Installationsquelle benötigt

Es ist nicht möglich, alle Umstände zu beseitigen, unter denen die Anwendung eines Patches u. U. Zugriff auf die ursprüngliche Installationsquelle erfordert.

Beachten Sie die folgenden Punkte, um die Wahrscheinlichkeit zu verringern, dass Ihr Patch Zugriff auf die ursprüngliche Installationsquelle benötigt:

  • Verwenden Sie nur Patches für vollständige Dateien. Dadurch entfällt die Notwendigkeit, binäre Patches für alle zuvor veröffentlichten Versionen der Datei zu erstellen. Beachten Sie, dass Patches für vollständige Dateien normalerweise größer als binäre Patches sind. Sie können einen Patch ganz einfach als Patch für eine vollständige Datei festlegen, indem Sie die IncludeWholeFilesOnly-Eigenschaft mit dem Wert 1 in der PCP-Datei (Patch Creation Properties) erstellen.
  • Stellen Sie sicher, dass von keiner Ihrer benutzerdefinierten Aktionen auf den ursprünglichen Quellspeicherort zugegriffen wird.
  • Stellen Sie sicher, dass es sich bei der ResolveSource-Aktion um eine bedingte Aktion handelt, sodass sie nur bei Bedarf ausgeführt wird, oder dass sie alternativ gar nicht vorhanden ist.
  • Geben Sie in die MsiFileHash-Tabelle für alle nicht versionierten Dateien die erforderlichen Informationen ein. Das Windows Installer SDK-Tool „Msifiler.exe“ kann dies ganz einfach für Sie erledigen.
  • Stellen Sie sicher, dass alle Dateien über die richtigen Versions- und Sprachinformationen verfügen. Das Windows Installer SDK-Tool „Msifiler.exe“ kann dies ganz einfach für Sie erledigen.

Anforderungen an die Installationsquelle beim Patchen

In den folgenden Fällen kann der Zugriff auf die ursprünglichen Installationsquellen erforderlich sein, um den Patch anzuwenden:

  • Der Patch gilt für ein Feature, das derzeit von der Quelle aus ausgeführt wird. In diesem Fall wechselt das Feature vom Zustand „Run-from-Source“ (aus Quelle ausführen) in den Zustand „Local“ (Lokal).

  • Der Patch wird auf eine Komponente mit einer fehlenden oder beschädigten Datei angewendet.

  • Der Patch wird auf eine Datei in einer Komponente angewendet, die auch nicht versionierte Dateien ohne MsiFileHash-Einträge enthält. Eine MsiFileHash-Tabelle mit Einträgen ist erforderlich, um ein unnötiges erneutes Kopieren von nicht versionierten Dateien vom Quellspeicherort zu verhindern.

  • Der Patch wurde mit dem REINSTALLMODE-Wert „amus“ oder „emus“ angewendet. Diese Option birgt Risiken, da sie Dateikopiervorgänge unabhängig von der Dateiversion ausführt. Dies kann dazu führen, dass Dateien nach unten angepasst werden und erfordert fast immer die Quelle. Der empfohlene REINSTALLMODE-Wert ist „omus“.

  • Das zwischengespeicherte Paket für das Produkt fehlt. Das zwischengespeicherte Paket wird für die Anwendung eines Patchs benötigt. Das zwischengespeicherte Paket wird im Ordner „%windir%\Installer“ gespeichert.

  • Das Paket wird erstellt, um einen Aufruf der ResolveSource-Aktion auszuführen. Diese Aktion sollte im Allgemeinen vermieden oder aber als bedingte Aktion verwendet werden, da ihre Ausführung immer zu einem Zugriff auf die Quelle führt.

  • Das Paket enthält eine benutzerdefinierte Aktion, die versucht, auf irgendeine Weise auf die Quelle zuzugreifen. Das häufigste Beispiel ist der benutzerdefinierte Aktionstyp 23 für die gleichzeitige Installation.

    Hinweis

    Gleichzeitige Installationen werden nicht für die Installation von Anwendungen empfohlen, die für die Freigabe für die Öffentlichkeit bestimmt sind. Informationen zu gleichzeitigen Installationen finden Sie unter Gleichzeitige Installationen.

     

  • Das Patchpaket besteht aus binären Patches, die nicht für die aktuelle Version der Datei auf dem Computer gelten.

Beachten Sie das folgende Beispiel, in dem Windows Installer beim Anwenden eines Patchs Zugriff auf die ursprüngliche Quelle benötigt:

  1. Installieren Sie die RTM-Version des Produkts – Beispiel:
  2. Wenden Sie Patch „Qfe1.msp“ auf den Computer an. Dadurch wird Version 1.0 von „Example.dll“ auf Version 1.1 gepatcht.
  3. Der neue Patch „Qfe2.msp“ wird bereitgestellt, der „Example.dll“ auf Version 1.2 aktualisiert und „Qfe1.msp“ als veraltet markiert. Der Patch wurde jedoch nur für die Zielversion 1.0 von „Example.dll“ erstellt, da er mit der RTM-Version des Produkts generiert wurde. Version 1.2 von „Example.dll“ verfügt über den Fix, der in „Example.dll“, Version 1.1, enthalten ist, aber die MSP-Datei wurde zwischen den RTM- und QFE2-Images generiert. Wenn „Qfe2.msp“ also auf den Computer angewendet wird, muss Windows Installer auf die ursprüngliche Quelle zugreifen. Der binäre Patch für „Example.dll“ kann nicht auf Version 1.1 angewendet werden, sondern nur auf Version 1.0. Dies führt dazu, dass der Installer Version 1.0 von „Example.dll“ vom ursprünglichen Quellspeicherort erneut kopiert, damit der Patch erfolgreich angewendet werden kann.

Anforderungen an die Installationsquelle beim Entfernen eines Patchs

Möglicherweise ist Zugriff auf die ursprünglichen Installationsquellen erforderlich, um einen Patch zu entfernen, wenn Windows Installer keine Baselineinformationen zum Patch gespeichert hat. Ab Windows Installer 3.0 speichert der Installer selektiv Baselineinformationen zu Dateien, wenn sie aktualisiert werden. Weitere Informationen zum Baselinecache finden Sie unter Reduzieren der Patchgröße.