WIX burn bundle - не удаляет старую версию

В настоящее время я создаю настройку для нашего «AwesomeApp», которое в дальнейшем я буду называть «MSI». Проблема, с которой я столкнулся, заключается в следующем:

У моего MSI есть свой код UpgradeCode и версия, и когда я поднимаю его и запускаю MSI, старая версия удаляется, как и должно быть. (Сейчас я делаю только основные обновления) Однако, когда я запускаю загрузчик (и, конечно, я ДЕЙСТВИТЕЛЬНО поднял номер версии загрузчика, и у него есть свой собственный UpgradeCode, который никогда не меняется), я получаю две установки и две записи в ARP: один для старой и один для новой версии MSI

Какого черта я делаю не так? Это меня бесит.

Вот msi xml:

<?xml version="1.0" encoding="UTF-8"?>
  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <?define Source = "..\" ?>
  <?define Binaries = "..\AwesomeApp\bin\Release" ?>
  <?define AppName = "AwesomeApp" ?>
  <?define AppDataFolderName = "AwesomeApp" ?>
  <?define version = "0.6.0.0" ?>
  <?define upgradeCode = "801e999b-8edc-47a4-9793-78273739aa7d"?>

  <Product Id="*" Name="AwesomeApp" Language="1033"  Version="$(var.version)" Manufacturer="AwesomeCorp" 
           UpgradeCode="$(var.upgradeCode)">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <MediaTemplate EmbedCab="yes" />

    <MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="no" DowngradeErrorMessage="A newer version of this product was found." />

    <Feature Id="ProductFeature" Title="$(var.AppName)" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>

    <Icon Id="my.ico" SourceFile="my.ico" />

    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
    <UIRef Id="WixUI_InstallDir" />

    </Product>

    <!-- Fragment stuff omitted for clarity -->
</Wix>

И вот загрузчик xml:

        <Chain>
      <!--<PackageGroupRef Id="NetFx40Web" />

      <RollbackBoundary />-->

      <!-- referencing other projects and using variables see: http://wixtoolset.org/documentation/manual/v3/votive/votive_project_references.html-->
      <MsiPackage Id="Setup"
                  Compressed="yes"
                  SourceFile="$(var.AwesomeSetup.TargetPath)"
                  Vital="yes">
        <MsiProperty Name="INSTALLFOLDER" Value="[INSTALLDIR]" />
        <!--<MsiProperty Name="VERSION" Value="$(var.version)" />-->
      </MsiPackage>
        </Chain>
    </Bundle>
</Wix>

И вот журнал:

[0D70:1560][2013-12-24T08:45:56]i001: Burn v3.8.1128.0, Windows v6.2 (Build 9200: Service Pack 0), path: C:\Users\Alex\Downloads\AwesomeSetup.exe, cmdline: '/log MyLogFile.log'
[0D70:1560][2013-12-24T08:45:56]i000: Initializing string variable 'INSTALLDIR' to value '"[ProgramFilesFolder]AwesomeCorp\AwesomeApp"'
[0D70:1560][2013-12-24T08:45:57]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\Alex\Downloads\MyLogFile.log'
[0D70:1560][2013-12-24T08:45:57]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Users\Alex\Downloads\AwesomeSetup.exe'
[0D70:1560][2013-12-24T08:45:57]i000: Setting string variable 'WixBundleName' to value 'AwsesomeApp'
[0D70:1560][2013-12-24T08:45:57]i000: Loading managed bootstrapper application.
[0D70:1560][2013-12-24T08:45:57]i000: Creating BA thread to run asynchronously.
[0D70:1560][2013-12-24T08:45:57]i100: Detect begin, 2 packages
[0D70:1844][2013-12-24T08:45:57]i000: Parsing command line arguments
 System.String[].
[0D70:1844][2013-12-24T08:45:57]i000: Creating UI
[0D70:1560][2013-12-24T08:45:57]i000: Setting string variable 'NETFRAMEWORK40' to value '1'
[0D70:1560][2013-12-24T08:45:57]i102: Detected related bundle: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, type: Upgrade, scope: PerMachine, version: 0.5.0.0, operation: MajorUpgrade
[0D70:1560][2013-12-24T08:45:57]i052: Condition 'NETFRAMEWORK40' evaluates to true.
[0D70:1560][2013-12-24T08:45:57]i101: Detected package: NetFx40Web, state: Present, cached: Complete
[0D70:1560][2013-12-24T08:45:57]i101: Detected package: Setup, state: Absent, cached: None
[0D70:1560][2013-12-24T08:45:57]i199: Detect complete, result: 0x0
[0D70:1844][2013-12-24T08:45:57]i000: Pagestamachine: setting WelcomePage
[0D70:1844][2013-12-24T08:45:57]i000: Getting variable 'INSTALLDIR' from the bundle.
[0D70:1844][2013-12-24T08:45:57]i000: Writing variable 'INSTALLDIR' with the value 'C:\Program Files (x86)\AwesomeCorp\AwesomeApp' to the bundle.
[0D70:1844][2013-12-24T08:45:57]i000: Setting string variable 'INSTALLDIR' to value 'C:\Program Files (x86)\AwesomeCorp\AwesomeApp'
[0D70:1844][2013-12-24T08:45:57]i000: Getting variable 'INSTALLDIR' from the bundle.
[0D70:1560][2013-12-24T08:46:05]i200: Plan begin, 2 packages, action: Install
[0D70:1844][2013-12-24T08:46:05]i000: Pagestamachine: setting ProgressPage
[0D70:1560][2013-12-24T08:46:05]w321: Skipping dependency registration on package with no dependency providers: NetFx40Web
[0D70:1560][2013-12-24T08:46:05]i000: Setting string variable 'WixBundleRollbackLog_Setup' to value 'C:\Users\Alex\Downloads\MyLogFile_0_Setup_rollback.log'
[0D70:1560][2013-12-24T08:46:05]i000: Setting string variable 'WixBundleLog_Setup' to value 'C:\Users\Alex\Downloads\MyLogFile_0_Setup.log'
[0D70:1560][2013-12-24T08:46:05]i201: Planned package: NetFx40Web, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[0D70:1560][2013-12-24T08:46:05]i201: Planned package: Setup, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[0D70:1560][2013-12-24T08:46:05]i207: Planned related bundle: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, type: Upgrade, default requested: Absent, ba requested: Absent, execute: Uninstall, rollback: Install, dependency: None
[0D70:1560][2013-12-24T08:46:05]i299: Plan complete, result: 0x0
[0D70:1560][2013-12-24T08:46:05]i300: Apply begin
[0D70:1844][2013-12-24T08:46:05]i000: Pagestamachine: setting ProgressPage
[183C:26FC][2013-12-24T08:46:07]i360: Creating a system restore point.
[183C:26FC][2013-12-24T08:46:07]i361: Created a system restore point.
[183C:26FC][2013-12-24T08:46:07]i000: Caching bundle from: 'C:\Users\Alex\AppData\Local\Temp\{3c4fa1ca-8f44-4d77-a9e6-4a42cdd61fb5}\.be\AwesomeSetup.exe' to: 'C:\ProgramData\Package Cache\{3c4fa1ca-8f44-4d77-a9e6-4a42cdd61fb5}\AwesomeSetup.exe'
[183C:26FC][2013-12-24T08:46:07]i320: Registering bundle dependency provider: {3c4fa1ca-8f44-4d77-a9e6-4a42cdd61fb5}, version: 0.6.0.0
[183C:151C][2013-12-24T08:46:07]i305: Verified acquired payload: Setup at path: C:\ProgramData\Package Cache\.unverified\Setup, moving to: C:\ProgramData\Package Cache\{331D731B-5DAF-4EEC-A89B-C64786EFD96F}v0.6.0.0\AwesomeSetup.msi.
[183C:26FC][2013-12-24T08:46:07]i323: Registering package dependency provider: {331D731B-5DAF-4EEC-A89B-C64786EFD96F}, version: 0.6.0.0, package: Setup
[183C:26FC][2013-12-24T08:46:07]i301: Applying execute package: Setup, action: Install, path: C:\ProgramData\Package Cache\{331D731B-5DAF-4EEC-A89B-C64786EFD96F}v0.6.0.0\AwesomeSetup.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" INSTALLFOLDER="C:\Program Files (x86)\AwesomeCorp/AwesomeApp"'
[0D70:1560][2013-12-24T08:46:10]i319: Applied execute package: Setup, result: 0x0, restart: None
[183C:26FC][2013-12-24T08:46:10]i325: Registering dependency: {3c4fa1ca-8f44-4d77-a9e6-4a42cdd61fb5} on package provider: {331D731B-5DAF-4EEC-A89B-C64786EFD96F}, package: Setup
[183C:26FC][2013-12-24T08:46:10]i301: Applying execute package: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, action: Uninstall, path: C:\ProgramData\Package Cache\{3e80e7b7-660e-4529-b7fa-414ddc2954f5}\AwesomeSetup.exe, arguments: '"C:\ProgramData\Package Cache\{3e80e7b7-660e-4529-b7fa-414ddc2954f5}\AwesomeSetup.exe" -uninstall -quiet -burn.related.upgrade'
[0D70:1560][2013-12-24T08:46:11]i319: Applied execute package: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, result: 0x0, restart: None
[0D70:1560][2013-12-24T08:46:11]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No
[0D70:1844][2013-12-24T08:46:11]i000: Pagestamachine: setting FinishPage

Насколько я понимаю в журнале, существующий msi не обнаруживается, поэтому выполняется чистая установка, то есть две записи в ARP. но как это может быть?


person Alexander Marek    schedule 24.12.2013    source источник


Ответы (2)


Строки из журнала:

[183C:26FC][2013-12-24T08:46:10]i301: Applying execute package: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, action: Uninstall, path: C:\ProgramData\Package Cache\{3e80e7b7-660e-4529-b7fa-414ddc2954f5}\AwesomeSetup.exe, arguments: '"C:\ProgramData\Package Cache\{3e80e7b7-660e-4529-b7fa-414ddc2954f5}\AwesomeSetup.exe" -uninstall -quiet -burn.related.upgrade'
[0D70:1560][2013-12-24T08:46:11]i319: Applied execute package: {3e80e7b7-660e-4529-b7fa-414ddc2954f5}, result: 0x0, restart: None

показать, что предыдущая версия пакета удаляется.

Это было успешно, поэтому запись ARP следует удалить. Найдите журнал записи для этого вызова.

person Bob Arnson    schedule 26.12.2013
comment
Я что-то упускаю? Я думал, что это БЫЛИ журналы записи ... По крайней мере, я запустил программу установки записи с помощью AwesomeSetup.exe / log MyLogFile.log (см. Первый ответ в windows-installer-xml-wix-toolset.687559.n2.nabble.com/) Я искал через документацию (может быть, недостаточно?), но не смог найти никакой информации о том, где burn хранит свои файлы журналов, поэтому я подумал, что это было ....: | - person Alexander Marek; 26.12.2013
comment
Когда старый пакет удаляется, он создает свой собственный набор журналов. Поскольку новая версия сообщает, что старая версия была успешной, вам нужны журналы из старой версии, чтобы выяснить, почему она не удалила старую запись ARP. - person Bob Arnson; 26.12.2013
comment
кажется разумным, но я не могу понять, где должны быть эти журналы. Не могли бы вы прислать мне ссылку с практическими рекомендациями или что-то в этом роде? Извините за мою досадную некомпетентность ...: | - person Alexander Marek; 27.12.2013
comment
Я предполагаю, что они будут рядом с основным журналом, из которого вы вставили. Если нет, Burn помещает журналы по умолчанию в% TMP% (или% TMP% \ .., если вы работаете на компьютере со службами терминалов). - person Bob Arnson; 27.12.2013
comment
Благодаря вашей подсказке я нашел журнал, в котором показано, что старая версия AwesomeApp удалена - по крайней мере, ее папка, значки и все остальное. Но, к сожалению, запись пакета в ARP (? - я имею в виду список «Программы и компоненты») не удалена, и мне нужно это исправить. Любые идеи? - person Alexander Marek; 05.01.2014

Cudos Бобу за то, что он нашел ответ. Кажется, действительно есть ошибка в управляемом BA, который я использую, которым является Laika42 Themed Bootstrapper Light.

Я создал тестовый проект, чтобы проверить это поведение, и загрузил его на свой skydrive

Что я сделал:

  • Создал простое консольное приложение «AwesomeApp», чтобы было что установить.
  • Создал для него инсталляционный проект
  • Создал для него проект WIX Bootstrapper
  • Создал для него проект Lakia42 Bootstrapper

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

  • Когда я устанавливаю загрузчик Laika, затем повышаю его версию, версию настроек и снова устанавливаю, старое приложение удаляется * , но старая запись ARP остается в списке! *

Очень досадный баг, убивший несколько часов моего времени ... Большое спасибо, Боб!

ОБНОВЛЕНИЕ. Мне только что пришло письмо с исправленной управляемой dll BA от Laika42. Теперь это работает как шарм. Надеюсь, они скоро его опубликуют. А до тех пор будьте осторожны при использовании Laika42 Bootstrapper Light.

@ Боб: Думаю, я должен тебе холодного пива, верно? Позвони мне, когда ты приедешь в Вену ;-)

person Alexander Marek    schedule 08.01.2014