Zabránění opravy v vyžadování přístupu k původnímu zdroji instalace
Není možné odstranit všechny okolnosti, za kterých může aplikace opravy vyžadovat přístup k původnímu zdroji instalace.
Pokud chcete minimalizovat možnost, že oprava bude vyžadovat přístup k původnímu zdroji, dodržujte následující body:
- Používejte pouze opravy celého souboru. Tím se eliminuje nutnost vytvářet binární opravy pro všechny dříve vydané verze souboru. Všimněte si, že všechny opravy souborů jsou obecně větší než binární opravy. Opravu můžete snadno nastavit jako celou opravu souboru tak, že vytvoříte vlastnost IncludeWholeFilesOnly s hodnotou 1 (jedna) v souboru PCP (Patch Creation Properties).
- Ujistěte se, že žádná z vašich vlastních akcí nemá přístup k původnímu zdrojovému umístění.
- Ujistěte se, že je akce ResolveSource podmíněná, aby se spustila pouze v případě potřeby, nebo případně vůbec nebyla k dispozici.
- Vyplňte tabulku MsiFileHash pro všechny neveřejné soubory. Nástroj Windows Installer SDK, Msifiler.exe, to můžete snadno provést za vás.
- Ujistěte se, že všechny soubory mají správnou verzi a informace o jazyce. Nástroj Windows Installer SDK, Msifiler.exe, to můžete snadno provést za vás.
Požadavky na zdroj při opravách
Přístup k původním instalačním zdrojům může být nutný k použití opravy v následujících případech:
Oprava se vztahuje na funkci, která se aktuálně spouští ze zdroje. V tomto případě je funkce převedena ze stavu run-from-source do místního stavu.
Oprava se vztahuje na komponentu, která obsahuje chybějící nebo poškozený soubor.
Oprava se vztahuje na soubor v komponentě, která obsahuje také nezaznamenané soubory bez položek MsiFileHash. Vyplněná tabulka MsiFileHash je nutná, aby se zabránilo zbytečnému opakovanému kopírování neversionovaných souborů ze zdrojového umístění.
Oprava byla použita s režimy REINSTALLMODE amus nebo emus. Tato možnost je nebezpečná v tom, že provádí operace kopírování souborů bez ohledu na verzi souboru. To může vést ke snížení počtu souborů a téměř vždy vyžaduje zdroj. Doporučená hodnota REINSTALLMODE je omus.
Chybí balíček uložený v mezipaměti produktu. Balíček uložený v mezipaměti je nutný pro použití opravy. Balíček uložený v mezipaměti je uložen ve složce %windir%\Installer.
Balíček je navržen tak, aby provedl volání akce ResolveSource. Této akci by se obecně mělo odpovídajícím způsobem nebo podmínečně vyhnout, protože její provedení vždy vede k přístupu ke zdroji.
Balíček má vlastní akci, která se nějakým způsobem pokusí o přístup ke zdroji. Nejběžnějším příkladem je vlastní akce typu 23, která se týká souběžné instalace.
Poznámka
Souběžné instalace se nedoporučují pro instalaci aplikací určených pro vydání pro veřejnost. Informace o souběžných instalacích naleznete v tématu Souběžné instalace.
Balíček oprav se skládá z binárních oprav, které se nevztahují na aktuální verzi souboru v počítači.
Podívejte se na následující příklad, kde Instalační služba systému Windows vyžaduje přístup k původnímu zdroji při použití opravy:
- Nainstalujte verzi RTM produktu Example.
- Použijte opravu Qfe1.msp na počítač. Aktualizuje verzi 1.0 Example.dll na verzi 1.1.
- Poskytuje se nová oprava Qfe2.msp, která aktualizuje Example.dll na verzi 1.2 a zastaralou verzi Qfe1.msp. Oprava byla však vytvořena pouze pro cílovou verzi 1.0 Example.dll, protože byla generována pomocí verze RTM produktu. Example.dll verze 1.2 obsahuje opravu obsaženou v Example.dll verze 1.1, ale soubor .msp se vygeneroval mezi imagemi RTM a QFE2. Takže když se na počítač použije Qfe2.msp, musí instalační služba systému Windows získat přístup k původnímu zdroji. Binární oprava pro Example.dll se nedá použít na verzi 1.1; může platit pouze pro verzi 1.0. To vede k tomu, že instalační program znovu kopíruje verzi 1.0 souboru Example.dll z původního zdrojového umístění, aby bylo možné opravu úspěšně použít.
Požadavky na zdroje při odstraňování opravy.
Přístup k původním zdrojům instalace může být nutný k odebrání opravy, pokud Instalační služba systému Windows neuložila základní informace o opravě. Počínaje Instalační službou systému Windows 3.0 instalační program selektivně ukládá základní informace o souborech při jejich aktualizaci. Další informace o základní mezipaměti naleznete v tématu Zmenšení velikosti opravy .