Вопрос

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

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

<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", и это решило проблему.Это делает его немного медленнее, поскольку он полностью удаляет предыдущую установку, а не просто обновляет измененные файлы (которые, похоже, он не обнаружил должным образом для меня), но выполняет свою работу.

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top