WiX - установка предварительных требований и сторонних приложений
У меня есть установщик Windows для Windows для моего приложения С#. Все работает, я могу установить и удалить приложение. Но у меня есть несколько предварительных требований и других сторонних приложений, которые я хочу установить с моим приложением.
Предпосылки:
- Microsoft.NET Framework 4 (x86 и x64) - dotNetFx40_Full_x86_x64.exe
- SQL Server 2008 Express
- SQLEXPR_x64_ENU.EXE
- SQLEXPR32_x86_ENU.EXE
- SQL Server Compact 3.5 SP2
- SSCERuntime-ENU.msi
- SSCERuntime-ENU-x64.msi
Стороннее приложение:
- TeamViewer - TeamViewer_Setup.exe
Итак, я не ищу полного руководства для всех предварительных требований и сторонних приложений. Мне просто нужно, чтобы вы помогали выяснить, как именно я могу вставлять эти установки exe
и msi
в состав моей установки wix
.
Кроме того, некоторые из них относятся к x64
, а некоторые относятся к x86
, поэтому он должен быть достаточно способен обрабатывать версию и архитектуру ОС. Как это будет выполнено с помощью wix.
Я искал в Интернете какое-то время, и ничего конкретного, похоже, не работает для меня.
Мне нужно убедиться, что если эти приложения не установлены, программное обеспечение также не должно устанавливаться. Наряду с этим, если какое-либо предварительное или стороннее приложение уже установлено, оно не должно устанавливаться повторно.
Я предполагаю, что это можно сделать с помощью некоторых инструментов wix, но я не могу получить никаких конкретных инструкций по использованию.
РЕДАКТИРОВАТЬ 1
Хорошо У меня установлен Microsoft .NET Framework 4 (x86 and x64)
, и проблема, с которой я столкнулся сейчас, - это не удается установить SQL Server Compact 3.5 SP2
. Я делаю вещи один за другим, чтобы сделать вещи более ясными для меня. Здесь, в разделе "Мой общий код", вы можете просмотреть:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="Billy"
UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<PackageGroupRef Id="Netfx4Full"/>
<PackageGroupRef Id="SQLExpressCE"/>
<!-- Install Application -->
<MsiPackage Id="MyApplication" SourceFile="$(var.Installer.TargetPath)"/>
</Chain>
</Bundle>
<Fragment>
<!-- Check for .NET 4.0 -->
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
Value="Version"
Variable="Netfx4FullVersion" />
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
Value="Version"
Variable="Netfx4x64FullVersion"
Win64="yes" />
<!-- Install .NEt 4.0 -->
<PackageGroup Id="Netfx4Full">
<ExePackage Id="Netfx4Full"
DisplayName="Microsoft .NET Framework 4.0"
Compressed="no"
Cache="yes"
PerMachine="yes"
Permanent="yes"
Protocol="netfx4"
Vital="yes"
SourceFile=".\prerequisites\dotNetFx40_Full_x86_x64.exe"
InstallCommand="/passive /norestart"
DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />
</PackageGroup>
<!-- Install SQL Server CE -->
<PackageGroup Id="SQLExpressCE">
<MsiPackage
Cache="no"
Compressed="no"
ForcePerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile=".\prerequisites\SSCERuntime-ENU.msi"
InstallCondition="NOT VersionNT64 AND SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
<MsiPackage
Cache="no"
Compressed="no"
ForcePerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile=".\prerequisites\SSCERuntime-ENU-x64.msi"
InstallCondition="VersionNT64 AND NOT SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
</PackageGroup>
</Fragment>
</Wix>
ПРИМЕЧАНИЕ. Приведенный выше код устанавливает .NET Framework
, не устанавливая SQL Server Compact 3.5 SP2
EDIT -2
После ответа Tom Blodget
ответ я дошел до этого, но я не могу понять, как предоставить команду Install для моего пакета SQL Exe и то же самое для моего пакета MSI. Я также прошел этот ответ qaru.site/info/329689/... Mr. Neil Sleightholm
, но этот для SQL 2012
, как я могу сделать то же самое с SQL 2008 Server
и CE
(Условия и этапы)
<PackageGroup Id="SQLExpressCE">
<ExePackage
Cache="no"
Compressed="no"
Permanent="no"
Vital="yes"
InstallCommand="/QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS /BROWSERSVCSTARTUPTYPE=Automatic /SQLSVCSTARTUPTYPE=Automatic /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /SECURITYMODE=SQL /SAPWD="wegamed""
SourceFile=".\prerequisites\SQLEXPR32_x86_ENU.EXE"
DownloadUrl="http://download.microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x86_ENU.exe"
InstallCondition="NOT SQLServer2008R2Installed AND NOT SQLServerInstalled" />
<ExePackage DetectCondition="VersionNT64"
Cache="no"
Compressed="no"
Permanent="no"
Vital="yes"
InstallCommand="/QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS /BROWSERSVCSTARTUPTYPE=Automatic /SQLSVCSTARTUPTYPE=Automatic /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /SECURITYMODE=SQL /SAPWD="wegamed""
SourceFile=".\prerequisites\SQLEXPR_x64_ENU.EXE"
DownloadUrl="http://download.microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x86_ENU.exe"
InstallCondition="NOT SQLServer2008R2Installed AND NOT SQLServerInstalled" />
</PackageGroup>
Но программа установки не может быть выполнена. Я предполагаю, что это из-за команд установки, поскольку он работает до принятия лицензионного соглашения.
Ответы
Ответ 1
См. документы WiX 3.7 в разделе "Пакеты установочных пакетов установки". Если вы используете MSBuild, SharpDevelop или Visual Studio (не экспресс), вы можете использовать шаблон проекта WiX Bootstrapper. Если вы предпочитаете сами запускать инструменты командной строки, они являются свечой и светом, как для создания файлов MSI.
См. документы WiX 3.7 в разделе "Как установить .NET Framework с помощью записи". Примечание. WiX предлагает два предопределенных пакета для .NET 4.0, которые загружаются из Microsoft во время установки. Один из них - полный пакет, другой - пакет загрузчика, который загружается только в пользовательской системе. Если вы не хотите, чтобы ваш установщик зависел от доступа к Интернету, вы можете написать свой собственный пакет, как и любой произвольный exe, который вы связываете. Очевидно, что исходный код WiX может помочь с пакетами .NET 4.0, поскольку он имеет команду обнаружения, команду установки и удаления, которые вам понадобятся.
См. документацию по установке для каждого из других пакетов, чтобы узнать, что вы должны поместить в свои условия обнаружения, установить команды и удалить команды. И, опять же, у вас будет выбор размещения URL-адреса загрузки в каждом пакете или нет.
SQL Server CE
<PackageGroup Id="SQLExpressCE">
<!-- Per http://support.microsoft.com/kb/974247, on a 64-bit system both 32-bit and 64-bit packages must be installed and be the same version. -->
<MsiPackage
Visible="yes"
Cache="no"
Compressed="no"
ForcePerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile=".\prerequisites\SSCERuntime-ENU.msi" />
<MsiPackage
Visible="yes"
Cache="no"
Compressed="no"
ForcePerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile=".\prerequisites\SSCERuntime-ENU-x64.msi"
InstallCondition="VersionNT64" />
</PackageGroup>
Устранение неполадок WiX Burn
Запись создает файл журнала для себя, а также любые MsiPackages, которые он запускает. Проверьте папку% TEMP%.