Wix Major Upgrade, что я делаю не так? - PullRequest
2 голосов
/ 02 марта 2009

Обновления работают нормально, если не было изменено ни одного компонента, но при каждом изменении компонента обновление завершается неудачно, и пользователю необходимо вручную удалить и переустановить.

Некоторые фрагменты:

<Product Id="*" Name="My Application" Language="1033" Version="!(bind.FileVersion.ClientEXE)" Manufacturer="My Company" UpgradeCode="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
    <Package Id="*" Description="My Installer" Comments="Copyright My Company 2008" InstallerVersion="200" Compressed="yes" />
    <Upgrade Id="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
      <UpgradeVersion Language="1033" Property="UPGRADEFOUND" Minimum="0.0.0.0" Maximum="99.99.99.99" IncludeMinimum="yes" IncludeMaximum="yes" />
    </Upgrade>


    <InstallExecuteSequence>
          <RemoveExistingProducts Before="InstallInitialize" />
    </InstallExecuteSequence>

Кроме того, есть некоторые проблемы со следующим разделом реестра, которые иногда не удаляются при удалении, и я не понимаю, почему:

      <Component Id="InstalledRegistry" Guid="SOMEGUID-0a17-4c6b-983d-8f3feb3a7724">
        <RegistryKey Id="InstalledRegKey" Root="HKMU" Key="SOFTWARE\MyCompany\Client" Action="createAndRemoveOnUninstall">
          <RegistryValue Name="Version" Type="string" Value="!(bind.FileVersion.ClientEXE)" KeyPath="yes"/>
        </RegistryKey>
      </Component>

Это то, что загрузчик проверяет, чтобы узнать, запускать msiexec с «REINSTALL = ALL REINSTALLMODE = vamus» или нет, поэтому, если он был удален, но ключ реестра не был удален, программа установки попытается выполнить обновление и произойдет сбой без вывода сообщений .

Дайте мне знать, если потребуется дополнительная информация


Редактировать: впоследствии возникла другая проблема с обновлением только некоторых файлов. Изменил RemoveExistingProducts на After = "InstallValidate", и это решило эту проблему. Делает его немного медленнее, так как полностью удаляет предыдущую установку, а не просто обновляет измененные файлы (которые, как мне показалось, он не обнаружил должным образом), но выполняет свою работу.

1 Ответ

3 голосов
/ 02 марта 2009

FWIW, вам не нужны никакие аргументы командной строки для серьезного обновления.

Код выглядит нормально для меня, так может ли быть так, что номер версии не изменился? (помните, что установщик Windows заботится о трех первых частях, только если вы используете номер версии из 4 частей)

...