Я бы хотел, чтобы установщик на основе wix удалял или обновлял мое приложение в каталог, отличный от каталога по умолчанию, когда я выполнил установку по заданному пользователем пути.
Я выполнил шаг, упомянутый здесь http://wix.tramontana.co.hu/tutorial/getting-started/where-to-install и это мой код wix теперь в главном Product.wxs
<Upgrade Id="{UPGRRADE-GUID}">
<UpgradeVersion Minimum="$(var.ProductVersion)" Property="NEWERPRODUCTFOUND" OnlyDetect="yes" IncludeMinimum="yes" />
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" />
</Upgrade>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.programDir)">
<Directory Id="INSTALLDIR" Name="$(var.InstallDir)"/>
</Directory>
</Directory>
<!-- Find previous installation -->
<Property Id="INSTALLDIR">
<RegistrySearch Id="FindInstallLocation"
Root="HKLM"
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[PREVIOUSVERSIONSINSTALLED]"
Name="InstallLocation"
Type="raw" />
</Property>
<InstallExecuteSequence>
<FindRelatedProducts Before="LaunchConditions"/>
<AppSearch After="FindRelatedProducts"/>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
Мои функции получают доступ к свойству, используя следующий код
<DirectoryRef Id="INSTALLDIR">
<Directory Id="Feature1.Dir" Name="$(var.AddInName)">
<Component Id = "Addin" Guid="COMP-GUID">
</Directory>
</DirectoryRef>
<Feature Id="FeatureOne" Level="1" ConfigurableDirectory="INSTALLDIR" Title="$(var.ServiceDisplayName)" Description="$(var.ServiceDescription)" Absent="allow">
<ComponentRef Id="AddIn"/>
</Feature>
Я установил свойство ARPINSTALLLOCATION из mindcapersВики об обновлении.
ПРОБЛЕМА: Во время удаления и обновления он по-прежнему выбирает путь по умолчанию для INSTALLDIR C: \ Program Files \ My application.Через журналы я вижу, что INSTALLDIR установлен в Costfinalize на путь по умолчанию, а Feature1.Dir установлен на путь реестра, который является путем удаления фактически.
Может кто-нибудь предложить, что делать в этом случае?Нужно ли выполнять пользовательское действие после costfinalize вместо appsearch, где фактически установлено свойство реестра?
С уважением, raj