В WiX DirectorySearch
может использоваться, чтобы определить, существует ли определенный каталог на целевом компьютере. Но я не понимаю, существует ли согласованный способ определить, что каталог не существует .
Например:
<Property Id="INSTALLDIR" Secure="yes">
<RegistrySearch Id='InstallDir' Type='directory'
Root='HKLM' Key='Software\Company\Product\Install' Name='InstallPath'/>
</Property>
<Property Id='IS_INSTALLED' Secure='yes'>
<DirectorySearch Id='IsInstalled' Path='[INSTALLDIR]' />
</Property>
Если существует раздел реестра и каталог, свойству IS_INSTALLED
присваивается путь, возвращаемый DirectorySearch
.
Когда каталог не существует, IS_INSTALLED
, кажется, установлен на "C: \".
Это состояние, подобное:
<Condition>NOT (IS_INSTALLED = "C:\")</Condition>
надежный способ обнаружить, что каталог был найден? Есть ли лучший способ?
Ответ: Вот код WiX, основанный на ответе mrnxs , который я принял
<Property Id="PRODUCT_IS_INSTALLED" Secure="yes">
<RegistrySearch Id='RegistrySearch1' Type='directory'
Root='HKLM' Key='Software\Company\Product\Version\Install' Name='Path'>
<DirectorySearch Id='DirectorySearch1' Path='[PRODUCT_IS_INSTALLED]'/>
</RegistrySearch>
</Property>
<CustomAction Id='SET_INSTALLDIR'
Property='INSTALLDIR'
Value='[PRODUCT_IS_INSTALLED]'/>
<InstallExecuteSequence>
<Custom Action='SET_INSTALLDIR' After='AppSearch'></Custom>
</InstallExecuteSequence>