wix 3.5 удалить / обновить из указанного пользователем каталога - PullRequest
2 голосов
/ 16 января 2012

Я бы хотел, чтобы установщик на основе 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

1 Ответ

2 голосов
/ 17 января 2012

Вы должны сохранить исходное место установки в реестре.Затем при обновлении вы считываете это значение из реестра в свойство INSTALLDIR.

Это будет иметь тот же эффект, что и параметр INSTALLDIR в командной строке.

Других * 1007 нет* Простой метод, чтобы определить, где была установлена ​​предыдущая версия.(Я не говорю, что это невозможно определить.)

...