2013-11-20 1 views
7

Я новичок в Wix/Burn и пытаюсь понять некоторые из основ. У меня есть простой загрузчик, который устанавливает требуемый .net Framework 4.0, используя следующую цепочку:Установка .NET распространяемого с помощью Wix Bootstrapper (Burn)

<Chain> 
    <PackageGroupRef Id="NetFx40ClientRedist"/> 
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" /> 
</Chain> 

в соответствии с рекомендациями How To: Install the .NET Framework Using Burn. Приложение может использоваться на серверах без доступа к сети, поэтому важно, чтобы .net был установлен из локального распространяемого. Похоже, что bootstrapper работает очень хорошо и устанавливает инфраструктуру по назначению. Файл setup.exe, однако, примерно такого же размера, как и приложение (< 5 МБ), поэтому я должен предположить, что платформа все еще загружается во время установки.

Вопросы

  1. Что же, разница между "NetFx40ClientWeb" и "NetFx40ClientRedist" в пакете WixNetfxExtension?

  2. Как включить локальный, распространяемый в boostrapper, чтобы загрузка не требовалась?

EDIT:

Я полагаю, что я нашел ответ here:

WiXNetFxExtension будет проверять подкаталог под названием "Redist", где ваш пакет для пакета, то скачать если он не существует на , этот путь, например "Redist \ dotNetFx40_Client_setup.exe". Это стандарт Ожоговое поведение.

+1

Как вы сжили, чтобы скопировать папку переименования на локальную машину установщика? –

+0

Я получил его для работы, добавив атрибут «SourceFile» в определение «ExePackage» в исходном коде для NetFx40Redist, но мне все равно хотелось бы знать, как это сделать, не взломав исходный код. –

ответ

1

разница между этими двумя:
1. clientWeb - означает, что вы должны иметь подключение к Интернету и .net 4.0 будет закачан и после этого установить на машину.

2.clientRedist - означает распространяемый - означает полный пакет, который не требует никакого подключения к Интернету, вы можете установить его на любой компьютер.


Если вы используете распространяемый пакет, вы должны быть в порядке - вот пример для .Net 4.5, это то же самое для .Net 4.0 только diff - это распространяемый пакет.

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 
    <Bundle Name="Prog" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="*"> 
    <Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <PackageGroupRef Id="Netfx45FullPackage" /> 
    </Chain> 
    </Bundle> 
    <Fragment> 
    <PackageGroup Id="Netfx45FullPackage"> 
     <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe" DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" InstallCondition="(VersionNT &gt;= v6.0 OR VersionNT64 &gt;= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))" /> 

     <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" /> 
    </PackageGroup> 
    </Fragment> 
</Wix> 
+0

Как мы можем обнаружить и пропустить установку, если установлена ​​более высокая версия .Net? – jero2rome

+0

DetectCondition = "(Netfx4FullVersion = " 4.5.50709 ") И (НЕ VersionNT64 ИЛИ (Netfx4x64FullVersion = " 4.5.50709 "))" – Gilad

+0

Да я использую это состояние. Но в системах, где установлен 4.6, сжигание пытается запустить установщик. Затем я должен выйти из установщика .Net вручную из пользовательского интерфейса .Net. – jero2rome