2016-06-21 4 views
1

Я пытаюсь создать установщик для простого приложения .NET WPF C#. Я использую VS 2013 и WiX 3.10.2. Следуя инструкциям в Wix Tutotial/.NET/Bootstrapping, я создал Boostrap.exe, который объединяет веб-установщик .NET и приложение Setup.msi.WiX Bootstrapper

EDIT: Моя цель - понять, как настроить проекты Wi-Fi Bootstrap и Setup для небольших обновлений, небольших обновлений и основных сценариев обновления.

Из-за помех все кажется приятным, когда я запускаю новую установку. Однако, когда я запускаю новый загруженный файл Bootstrap.exe по уже существующей установке, в функциях Apps & появляется дублирующаяся запись, и в целевом местоположении приложения не изменяется файл - вопреки ожиданиям, что та же запись должна оставаться в приложениях & функции и целевое местоположение должны быть обновлены. EDIT: Похоже, что не может быть способа изменить REINSTALLMODE?

Если я добавлю идентификатор продукта и затем изменил версию установки (незначительное обновление), Bootstrap завершится неудачей с отменой пользователя? В файле журнала отображается «Ошибка 0x80070642: не удалось выполнить небольшое обновление пакета MSI». EDIT: Внутри журнала MSI сбой SecureRepair с кодом ошибки 39439E438 (?), Вероятно, потому, что сохраненное значение хэша не соответствует текущему ... но этого следует ожидать в незначительном обновлении MSI, правильно?

Существуют ли рекомендуемые конфигурации между проектами Boostrapper и Setup WiX, которые могут быть обработаны при малом обновлении, незначительном обновлении и основных случаях использования обновления, или поддерживает ли WiX Bootstrapper ТОЛЬКО основные обновления?

Я продолжу расследование, и я опубликую обновления моих результатов;

Любые советы оцениваются, Thanks!

Вот исходные файлы, которые я практически не изменился с мастером WiX сгенерированный код:

--- Product.wxs ---

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Product Id="*" Name="SetupProject1 1.0.0.0" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="4c8a8cbf-e3d0-410c-8a8d-7e67eb4e7ff7"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
    </Feature> 
</Product> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="LocalAppDataFolder"> 
      <Directory Id="AcmeFolder" Name="Acme"> 
       <Directory Id="INSTALLFOLDER" Name="WpfApplication1" /> 
      </Directory> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <Component Id="ProductComponent" Guid="8CA0B70F-39DA-4B4B-9104-46C58E26FCF4"> 
      <CreateFolder/> 
      <RemoveFolder Id="RemoveAcmeFolder" Directory="AcmeFolder" On="uninstall"/> 
      <RemoveFolder Id="RemoveINSTALLFOLDER" On="uninstall" /> 
      <RegistryValue Root="HKCU" Key="Software\Acme\WpfApplication1" Name="Version" Type="string" Value="[ProductVersion]" KeyPath="yes" /> 
      <File Source="$(var.WpfApplication1.TargetPath)" KeyPath="no" /> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

--- Bundle.wxs ---

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 

<Bundle Name="Bootstrapper1 1.0.0.0" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="e1092cbb-9134-42fc-a9f2-652f95f361fd"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

    <Chain> 
     <MsiPackage Name="Acme Setup" SourceFile="$(var.SetupProject1.TargetPath)" Vital="yes" /> 
    </Chain> 
</Bundle> 

ответ

3
  • Если вы изменили свои исполняемые файлы, увеличьте их номера версий. Установщик Windows предполагает, что файлы с одинаковыми версиями одинаковы.

  • Чтобы обновить пакет .msi, увеличьте его номер версии либо как часть основного обновления (типичного), либо незначительного обновления.

  • Чтобы обновить комплект, увеличьте его номер версии. По умолчанию Burn сохраняет пакеты с одинаковой версией.

+0

Спасибо, Боб. Я знаю, что в теории существует три категории изменений продукта (небольшие обновления, незначительные обновления и основные обновления). Я пытаюсь выяснить, как настроить мое решение WiX, чтобы иметь возможность делать какие-либо из них.Я думаю о небольших обновлениях, когда я разрабатываю, Малые обновления будут официальными исправлениями ошибок или дополнениями для добавления функций, а основные обновления будут тогда, когда операция/макет новой версии несовместима со старой или когда две версии могут существовать и работать бок о бок. Имеет ли это смысл? –

+0

Советы по документации Я могу использовать коды REINSTALLMODE для управления обновлением файлов. Например, код «e» будет переустановлен, даже если целевой файл является той же версией. Где находится REINSTALLMODE в WiX? –

+0

Burn заботится о REINSTALLMODE. О типах обновления см. Http://www.joyofsetup.com/2008/12/29/neither-more-nor-less/. Если у вас нет особых требований, вы можете игнорировать все, кроме основных обновлений. –