2017-01-15 4 views
0

Просто начните работу с WiX в Visual Studio. Не удается найти много документации для шаблона проекта bootstrapper.Нужно ли мне 2 проекта WIX при создании WiX Bootstrapper в visual studio?

Я создал пустое приложение WPF. Затем я создал проект установки ...

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Product Id="*" Name="WiXBenchInstaller" Language="1033" Version="1.0.0.0" Manufacturer="None" UpgradeCode="9d845a6d-3e16-45d6-b0c4-7e818e465bfe"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

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

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

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="WiXBench" /> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
     <Component Id="ProductComponent"> 
    <File Source="$(var.WiXBench.TargetPath)"/> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

Затем я создал проект ... загрузчика

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Bundle Name="WixBenchBootstrap" Version="1.0.0.0" Manufacturer="None" UpgradeCode="4b1049ed-38ba-4289-8d8d-e291160201e0"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

    <Chain> 
    <MsiPackage SourceFile="$(var.WiXBenchInstaller.TargetPath)"/> 
    </Chain> 
</Bundle> 

Все хорошо работает. Мой вопрос: правильно ли это. Кажется, что overkill имеет 2 проекта установки для простого приложения. Могу ли я просто иметь один проект начальной загрузки, содержащий все необходимое?

ответ

1

Это зависит от того, чего вы хотите достичь, количества пакетов, UI и т. Д.

http://wixtoolset.org/documentation/manual/v3/bundle/

«Пакет представляет собой набор установочных пакетов, которые соединены друг с другом в одном опыте пользователя. Связки часто используются для установки необходимых компонентов, таких как .NET Framework или выполнения Visual C++, перед тем, как приложения .MSI-файл. Связки также позволяют разбивать приложения с большим количеством приложений или наборов приложений на более мелкие логические пакеты, все еще представляя конечный пользователь одному продукту «

Если у вас есть один пакет msi, и вы не используете его нужен сложный интерфейс, а не только проект MSI. Если у вас несколько пакетов или вы хотите использовать интерфейс WPF, вам придется использовать загрузчик, как вы сейчас используете.

+0

Действительно. Кроме того, я хочу использовать .exe, а не .msi. У проекта установки WiX есть возможность создать exe, но это не работает. Я думаю, что это ошибка. Также я хочу, чтобы пользовательский интерфейс находился в загрузочном файле, который отображает файл лицензии и так далее. Похоже, мне нужно 2 проекта WiX для этого. – AQuirky

+0

Если вам нужен exe, вам придется сделать связку, как вы это делали выше. Кроме того, MSI имеет возможность показывать лицензии и другие диалоговые окна Build in. http://wixtoolset.org/documentation/manual/v3/wixui/wixui_dialog_library.html. Если бы мой ответ был полезен, отметьте его как ответ. –

1

Да, это правильный подход.

В общем, VS проекты производят один основной выход (.exe, .dll, .netmodule, .lib, .msi и т. Д.), А wixprojs не являются исключением. Об этом нет никаких правил; Это всего лишь дизайн файлов MSBuild .targets и их связанных дизайнеров проектов VS.

Если это отвлекает разных разработчиков, у вас могут быть разные решения, которые включают разные подмножества проектов. (Решение включает в себя ноль или более проектов. Проект включен в нулевые или более решения.)