WiX - установите необходимые компоненты и сторонние приложения
У меня есть установщик Windows wix для моего приложения C#. Все работает, я могу установить и удалить приложение. Но у меня есть несколько пререквизитов и других сторонних приложений, которые я хочу установить вместе с моим приложением.
Предпосылки:
- 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 с пакетом обновления 2 (SP2)
- SSCERuntime-ENU.msi
- SSCERuntime-RUS-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
РЕДАКТИРОВАТЬ -2
После обращения Tom Blodget
Ответ Я дошел до этого далеко, однако я не могу понять, как дать команду установки для моего пакета SQL Exe и то же самое для моего пакета MSI. Я также прошел этот ответ /questions/39748576/samozagruzka-sql-express-iz-wix/39748597#39748597 из 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 (не Express), вы можете использовать шаблон проекта WiX Bootstrapper. Если вы предпочитаете вызывать инструменты командной строки набора инструментов самостоятельно, они являются свечами и свечами, как и для создания файлов MSI.
См. Документацию по WiX 3.7 в разделе "Как: установить.NET Framework с помощью Burn". Примечание. 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 Устранение неполадок
Burn создает файл журнала для себя и всех MsiPackages, которые он запускает. Проверьте папку%TEMP%.