2016-05-17 5 views
0

У меня есть проект связки wix, который я редактирую (версия 3.10). Я пытаюсь использовать wixnetfxextensions для установки .net framework 4.6, если он еще не установлен. Я создал exepackage, который использует свойство WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED. Я предполагаю, что я не использую это правильно. Любая помощь в том, как его использовать? В настоящее время инфраструктура .net не будет устанавливать что-то неважно.Предварительные требования к Wix Toolset: Проверить .Net Framework

<Chain> 
     <PackageGroupRef Id="redist_vc140" /> 
     <PackageGroupRef Id="NetFx461Full" /> 
     <MsiPackage Id="MSI_Installer" SourceFile="C:\Installer.msi"/> 
    </Chain> 

    <Fragment> 
     <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED"/> 
     <!-- Install .NET 4.6.1 --> 
     <PackageGroup Id="NetFx461Full"> 
      <ExePackage Id="NetFx461" 
      DisplayName="Microsoft .NET Framework 4.6.1" 
      Compressed="no" 
      Cache="yes" 
      PerMachine="yes" 
      Permanent="yes" 
      Protocol="netfx4" 
      Vital="yes" 
      SourceFile="..\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" 
      UninstallCommand="/q /norestart" 
      RepairCommand="/q /norestart" 
      DetectCondition="NOT WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" /> 
     </PackageGroup> 
    </Fragment> 

ответ

1

Вы выполняете большую работу по установке .net, которую вам действительно не нужно делать.

Чтобы добавить .net 461 к установщику просто включите netfxextension и добавить

<Bundle> 
    <PayloadGroup Id="NetFx461RedistPayload"> 
     <Payload Name="redist\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" 
      SourceFile="C:\path\to\redists\in\repo\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"/> 
    <PayloadGroup/> 
</Bundle> 

так, что полный инсталлятор включен в загрузчике. Вы можете проигнорировать это, а затем загрузочный загрузчик загрузит установщик, но если у клиента нет подключения к Интернету, он не сможет установить .net.

Затем в цепочке просто добавить

<PackageGroupRef Id="NetFx461Redist"/> 

Я использовал this в качестве эталона и проверил wix source, чтобы увидеть, что имя .net 461 используется в netfxextension.


Шон Холл отметил, что пучки даже не использовать свойства так, что я написал здесь, не применяются вообще в этой ситуации. (И было также неверно)

+2

Свойство 'WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED' не работает, потому что свойства предназначены для не связанных пакетов MSI. –

+0

Да, это также сделало бы это. Wix netfxextension использует , поскольку это условие обнаружения по умолчанию для exepackage net461. –

+0

Спасибо Брайан, что сработало – AlThurm

0

Сделал то, что предложил Брайан Сазерленд: Добавлен WxsVariable, который сравнивает .netframework с определенным минимальным номером выпуска. затем сделайте это условие обнаружения в exepackage

Смежные вопросы