WiX: .Net 3.5 обязательное условие - PullRequest
4 голосов
/ 30 марта 2010

У меня есть установщик WiX, который я хотел бы проверить на наличие .Net 3.5 и установить его, если он не существует. У меня есть следующие строки в моем файле wixproj:

<BootstrapperFile Include="Microsoft.Net.Framework.3.5">
    <ProductName>.NET Framework 3.5</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
    <ProductName>WIndows Installer 3.1</ProductName>
</BootstrapperFile>

Когда я создаю установщик, создается папка DotNetFX35, в которой находятся 4 разные версии .Net (включая 3.5) и файл установщика.

У меня есть два вопроса:

  1. Как сделать так, чтобы в версии 3.5 только (чтобы пользователю не нужно было устанавливать более 100 МБ файлов)?

  2. Как сказать WiX упаковать эти файлы в файл MSI, чтобы пользователь мог загрузить только 1 файл?

Ответы [ 4 ]

3 голосов
/ 30 марта 2010

Как сделать так, чтобы в версии 3.5 только (чтобы пользователю не нужно было устанавливать более 100 МБ файлов)?

Вы упомянули, что есть "4разные версии ".NET там.На самом деле их всего 3: DotNetFX20, DotNetFX30 и DotNetFX35 и некоторые обновления Windows.Причина в том, что .NET 3.5 и .NET 3.0 на самом деле являются в основном аддитивными выпусками поверх библиотек среды .NET 2.0 и среды выполнения.

Другими словами, .NET 3.0 и .NET 2.0 являются предварительными условиями.NET 3.5.Вам нужны все эти файлы, если ваше приложение предназначено для .NET 3.5.

Однако некоторым приложениям требуется только подмножество .NET 3.5, называемое .NET 3.5 клиентский профиль .Вы можете попробовать это, установив флажок «только клиентские рамки» в опциях сборки ваших проектов Visual Studio.

Если ваше приложение все еще строится и работает нормально с профилем клиента, то вы можете изменить «Microsoft.Net.Framework.3.5» на «Microsoft.Net.Client.3.5».Это всего лишь 28 МБ.

Как сказать WiX упаковать эти файлы в файл MSI, чтобы пользователь мог загрузить только 1 файл?

предварительные условия должны быть установлены до запуска MSI, поэтому они не могут быть частью MSI.Однако вы можете сделать наоборот: упаковать необходимые компоненты и MSI в самораспаковывающийся архив, например, с помощью WinZip Self-Extractor .Самораспаковывающийся архив может вызывать извлеченный файл setup.exe.

1 голос
/ 21 апреля 2010

Ознакомьтесь с dotNetInstaller http://dotnetinstaller.codeplex.com. Это загрузчик установки, поэтому вы можете использовать его для проверки и установки зависимостей для вашего приложения. Вы также можете встроить установщики для создания одного setup.exe. Вот выдержка из их файла справки «Распространите одну сжатую исполняемую упакованную установку со всеми предварительными требованиями».

1 голос
/ 30 марта 2010
  1. Я думаю, вам лучше создать отдельный проект для загрузчика. Если веб-установки достаточно, должен работать следующий шаблон проекта:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <ItemGroup>
        <BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
            <ProductName>Windows Installer 3.1</ProductName>
        </BootstrapperFile>
        <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1">
            <ProductName>.NET Framework 3.5 SP1</ProductName>
        </BootstrapperFile>
    </ItemGroup>
    <Target Name="Bootstrapper">
        <GenerateBootstrapper
            ApplicationFile="MyProject.msi"
            ApplicationName="MyProject"
            BootstrapperItems="@(BootstrapperFile)"
            OutputPath="$(OutputPath)"
            Culture="en-US"
            CopyComponents="true"
            ComponentsLocation="HomeSite"
            Path="$(BootstrapperPath)" />
    </Target></Project>
    
  2. Команда WiX работает над Burn, новым загрузчиком, но пока он не готов к производственному использованию, вы можете использовать одно из (коммерческих) решений для создания самораспаковывающегося единственного исполняемого файла, который автоматически запускает «установку». ехе».

1 голос
/ 30 марта 2010

Чтобы ответить на часть 2 вашего вопроса:

Идея загрузчика заключается в том, чтобы предоставить .exe, который не имеет больших (если таковые имеются) зависимостей. Это гарантирует, что вы также можете загружать такие вещи, как установщик Windows. По этой причине загрузчик является .exe-файлом, который содержит или загружает необходимые файлы.

Это также гарантирует, что когда у вас уже установлен какой-либо компонент, он не загружается снова. Вы не можете упаковать все в одну msi по этой причине, а также потому, что это будет означать, что когда есть исправление безопасности для .NET, вам придется его исправить. Когда .NET устанавливается с помощью собственного установщика, Microsoft может выпускать исправления для него

...