Co to jest atrybut Wix „ KeyPath ”? W szczególności, jak ma to zastosowanie do następujących:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
Odpowiedzi:
Jak wyjaśnił Rob Mensching :
Oznacza to, że gdy Instalator Windows zdecyduje, czy zainstalować komponent, najpierw sprawdzi, czy zasób keypath jest już obecny. Jeśli tak, żaden z zasobów składnika nie jest zainstalowany.
Obecność zasobu keypath określa również, czy składnik został uszkodzony lub zaginął podczas „naprawy” pliku MSI.
Gdy zasób keypath jest wersjonowanym plikiem, Instalator Windows uzna go za istniejący tylko wtedy, gdy znajdzie plik o równej lub wyższej wersji.
W twoim konkretnym przykładzie masz składnik, który usuwa folder podczas dezinstalacji. Ten składnik zostanie zainstalowany tylko wtedy, gdy podany klucz rejestru jeszcze nie istnieje. Dodanie klucza rejestru, który będzie używany jako ścieżka klucza, jest powszechną sztuczką, gdy potrzebujesz ścieżki klucza dla składnika, który instaluje zasoby, których nie można używać jako ścieżki klucza, na przykład skrótu .
źródło