Я пытаюсь создать установщик для простого приложения .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>
Спасибо, Боб. Я знаю, что в теории существует три категории изменений продукта (небольшие обновления, незначительные обновления и основные обновления). Я пытаюсь выяснить, как настроить мое решение WiX, чтобы иметь возможность делать какие-либо из них.Я думаю о небольших обновлениях, когда я разрабатываю, Малые обновления будут официальными исправлениями ошибок или дополнениями для добавления функций, а основные обновления будут тогда, когда операция/макет новой версии несовместима со старой или когда две версии могут существовать и работать бок о бок. Имеет ли это смысл? –
Советы по документации Я могу использовать коды REINSTALLMODE для управления обновлением файлов. Например, код «e» будет переустановлен, даже если целевой файл является той же версией. Где находится REINSTALLMODE в WiX? –
Burn заботится о REINSTALLMODE. О типах обновления см. Http://www.joyofsetup.com/2008/12/29/neither-more-nor-less/. Если у вас нет особых требований, вы можете игнорировать все, кроме основных обновлений. –