c# - WiX-Instalar requisitos previos y aplicaciones de terceros
visual-studio-2010 windows-installer (1)
Tengo un instalador de Windows wix para mi aplicación C #. Las cosas están funcionando, soy capaz de instalar y desinstalar la aplicación. Pero tengo algunos requisitos previos y otras aplicaciones de terceros que deseo instalar con mi aplicación.
Requisitos previos:
- Microsoft .NET Framework 4 (x86 y 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
Aplicación de terceros:
- TeamViewer - TeamViewer_Setup.exe
Por supuesto, no estoy buscando directrices completas para todos los requisitos previos y aplicaciones de terceros. Solo necesito que la gente me ayude a averiguar cómo puedo integrar estas configuraciones de exe
y msi
para que wix
parte de mi instalación de wix
.
Además, algunos son para x64
y otros para x86
, por lo que debería ser lo suficientemente capaz para manejar la versión y arquitectura del sistema operativo. ¿Cómo se logrará esto con wix.
He estado buscando en internet por un tiempo y nada parece funcionar para mí.
Necesito asegurarme de que si estas aplicaciones no están instaladas, el software tampoco debería instalarse. Junto con eso, si alguno de los requisitos o la aplicación de terceros ya está instalada, no debería volver a instalarse.
Supongo que esto se puede hacer usando algunas herramientas de wix pero no puedo obtener instrucciones concretas sobre cómo hacerlo.
EDITAR 1
Ok, tengo instalado Microsoft .NET Framework 4 (x86 and x64)
, y el problema al que me enfrento ahora es que no puedo instalar SQL Server Compact 3.5 SP2
. Estoy haciendo las cosas una por una para aclararme las cosas. Aquí debajo estoy compartiendo mi código para que ustedes puedan revisar:
<?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>
NOTA: El código anterior instala .NET Framework
, no está instalando SQL Server Compact 3.5 SP2
EDITAR -2
Después de Tom Blodget
respuesta de Tom Blodget
, he llegado hasta aquí, pero no puedo entender cómo Tom Blodget
el Comando de instalación para mi paquete Exe de SQL y el mismo para mi paquete MSI. También he pasado por esta respuesta https://stackoverflow.com/a/19010097/1182021 de Mr. Neil Sleightholm
pero esta es para SQL 2012
, ¿cómo puedo hacer esto mismo con SQL 2008 Server
y CE
(las condiciones y pasos)
<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>
Pero la instalación no puede completar. Supongo que es debido a los comandos de instalación, ya que funciona hasta aceptar el acuerdo de licencia.
Consulte la documentación de WiX 3.7 en "Creación de paquetes de instalación". Si está utilizando MSBuild, SharpDevelop o Visual Studio (no Express), puede usar la plantilla de proyecto WiX Bootstrapper. Si prefieres llamar a las herramientas de la línea de comandos del conjunto de herramientas, estas son velas y luz, al igual que para crear archivos MSI.
Consulte la documentación de WiX 3.7 en "Cómo: Instalar .NET Framework con Burn". Nota: WiX ofrece dos paquetes predefinidos para .NET 4.0, ambos descargados desde Microsoft en el momento de la instalación. Uno es el paquete completo, el otro es el paquete descargador que solo se necesita para descargar en el sistema del usuario. Si prefieres que tu instalador no dependa del acceso a Internet, puedes escribir tu propio paquete como lo harás con cualquier archivo ejecutable arbitrario. Obviamente, el código fuente de WiX puede ayudar con los paquetes .NET 4.0 ya que tiene la condición de detección, el comando de instalación y el comando de desinstalación que necesitaría.
Consulte los documentos de instalación de cada uno de los otros paquetes para averiguar qué debe poner en sus condiciones de detección, instalar comandos y desinstalar comandos. Y, nuevamente, tendría la opción de poner una URL de descarga en cada paquete o no.
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>
Solución de problemas de grabación de WiX
Burn crea un archivo de registro para sí mismo, así como cualquier paquete Msi que se ejecute. Compruebe su carpeta% TEMP%.