Использование WiX для обновления старого приложения, установленного с WISE - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над приложением со множеством старых компонентов. У нас возникли проблемы при создании обновлений с помощью нашего старого установщика WISE. Я изучаю возможность создания обновленного MSI для приложения с помощью WiX, который включает только файлы, которые мы изменяем для сборки. Я работаю с файлом, подобным этому:

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>

  <Product Name='My Product' Id='AGUID-xxx-xxx-xxx-xxx' UpgradeCode='AGUID-xxx-xxx-xxx-xxx'
    Language='1033' Codepage='1252' Version='5.60.0' Manufacturer='Me'>

    <Package Id='*' Keywords='Installer' Description="My Upgrade Installer"
      Comments='This is an awesome installer because I wrote it' Manufacturer='Me'
      InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

    <Upgrade Id='AGUID-xxx-xxx-xxx-xxx'>
      <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND'
        Minimum='5.51.1' IncludeMinimum='yes' />
    </Upgrade>

    <Property Id='BINDIR'>
      <RegistrySearch Id='TheRegEntry' Type='raw' Root='HKLM' Key='Software\Me\MyApp\Startup' Name='Location' />
    </Property>

    <CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' />

    <Media Id='1' Cabinet='My.cab' EmbedCab='yes' DiskPrompt="You should not see this disk prompt" />
    <Property Id='DiskPrompt' Value="You should not see this disk prompt" />

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder' Name='PFiles'>
        <Directory Id='BINDIR' Name='Bin'>

          <Component Id='MyExeComponent' Guid='*'>
            <File Id='MyExeFile' Name='something.exe' DiskId='1' Source='<local path>\something.exe' KeyPath='yes'></File>
          </Component>

        </Directory>
      </Directory>
    </Directory>

    <Feature Id='MainProgram' Title='AnExe' Description='This is just one file of many' Level='1'>
      <ComponentRef Id='MyExeFile' />
    </Feature>

    <InstallExecuteSequence>
      <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom>
    </InstallExecuteSequence>

  </Product>
</Wix>

Это в основном пример обновления из документации по WiX с поиском в реестре для получения установленного местоположения, а затем только одной копии файла EXE.

У фактического установщика есть несколько файлов в MyExeComponent, которые я пытаюсь обновить, но я указываю только тот, который изменился. Я предполагаю, что я действительно спрашиваю, может ли установщик, который только «объявляет» часть полной установки, действительно обновить существующую установку.

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

Наша устаревшая процедура обновления патча включает создание MSP из нескольких MSI, а затем выполнение дополнительного шага, который создаетEXE-файлЯ могу попробовать вставить MSP, генерируемый WiX, в этот процесс, если я не могу заставить работать вышеперечисленное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...