premium - Un ejemplo completo de paquete de WiX 3.6 que arranca un perfil de cliente de.NET 4
wix login (3)
Intenté construir un ejemplo funcional de un script de instalación de WiX 3.6. Actualmente usamos WiX 3.5 y ahora nos gustaría comenzar a instalar el marco de perfil de cliente .NET 4 como un requisito previo para nuestro archivo MSI que crea nuestro script product.wxs
. WiX 3.6 parece ser el mejor camino a seguir.
¿Hay un ejemplo funcional de cómo hacer esto con WiX 3.6?
Aquí está nuestro script 3.5 que usamos hoy:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!-- Version change handling -->
<?define UpgradeCode="###############################"?>
<?ifdef env.BUILD_NUMBER ?>
<?define ProductVersion="2.6.$(env.BUILD_NUMBER).0"?>
<?else ?>
<?define ProductVersion="2.6.0.0"?>
<?endif ?>
<Product Id="*" Name="###############################" Language="1033" Version="$(var.ProductVersion)" Manufacturer="###############################" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" />
<!-- Custom actions for this installer -->
<Binary Id="###############################.dll" SourceFile="../../Libraries/###############################.CA.dll" />
<!-- Kill ##### before installation begins -->
<CustomAction Id="Kill#####ActionId" BinaryKey="###############################.dll" DllEntry="Kill#####Action" Execute="immediate" Impersonate="yes" Return="check" />
<InstallExecuteSequence>
<Custom Action="Kill#####ActionId" Before="InstallInitialize" />
</InstallExecuteSequence>
<!-- ADD/REMOVE Programs icon -->
<Icon Id="##############.ico" SourceFile="D:/##############/Input_WIX/NonHeat/##############.exe" />
<Property Id="ARPPRODUCTICON" Value="##############.ico" />
<Property Id="ARPHELPLINK" Value="http://##############" />
<!-- EULA agreement -->
<WixVariable Id="WixUILicenseRtf" Value="D:/##############/Input_WIX/Heat/License.rtf" />
<!-- Installer images -->
<WixVariable Id="WixUIBannerBmp" Value="InstallerTopImage.rle" />
<WixVariable Id="WixUIDialogBmp" Value="InstallerSideImage.rle" />
<UIRef Id="WixUI_Minimal" />
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="1.0.0.0" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
<!-- Require ##### to be installed -->
<Property Id="#####4.INSTALLPATH">
<RegistrySearch Id="RegistryFoundInstallPath" Key="SOFTWARE/McNeel/#####ceros/4.0" Root="HKLM" Name="InstallPath" Type="directory" />
</Property>
<Property Id="#####4.RECENT">
<RegistrySearch Id="RegistryFoundMostRecent" Key="SOFTWARE/McNeel/#####ceros/4.0" Root="HKLM" Name="MostRecent" Type="raw" />
</Property>
<Property Id="VRAYCOMMONDIR">
<RegistrySearch Id="ReigstryVRayCommon" Key="Software/ASGvis" Root="HKLM" Name="Common_dir" Type="raw" />
</Property>
<Condition Message="##### 4 required before install">
#####4.RECENT
</Condition>
<!-- Require administrator priveleges -->
<Condition Message="You need to be an administrator to install this product.">
Privileged</Condition>
<!-- Require .NET 3.5 SP1 to install -->
<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL" />
<Condition Message=''This setup requires the .NET Framework 3.5 with Service Pack 1 be installed.''>
<![CDATA[Installed OR (NETFRAMEWORK35_SP_LEVEL AND NETFRAMEWORK35_SP_LEVEL = "#1")]]>
</Condition>
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="#####4.INSTALLPATH">
<Directory Id="#####4.SYSTEM" Name="System"></Directory>
</Directory>
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="##############"></Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDir" Name="##############" />
</Directory>
</Directory>
<!-- Set FULL permissions to our shared folders -->
<Directory Id="CommonAppDataFolder">
<Directory Id="CommonApp##############" Name="##############">
<Directory Id="MODELLIBPATH" Name="##############">
<Component Id="##############UserPermissions" Guid="##############">
<CreateFolder>
<util:PermissionEx GenericRead="yes" GenericWrite="yes" GenericExecute="yes" Delete="yes" DeleteChild="yes" User="Users" Domain="[MachineName]" />
</CreateFolder>
</Component>
</Directory>
<Directory Id="APPDATAPATH" Name="#####">
<Component Id="##############UserPermissions" Guid="FC4BF85F-E7A4-45DE-B25C-8F9419E75307">
<CreateFolder>
<util:PermissionEx GenericRead="yes" GenericWrite="yes" GenericExecute="yes" Delete="yes" DeleteChild="yes" User="Users" Domain="[MachineName]" />
</CreateFolder>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="FontsFolder"></Directory>
<Component Id="##############RegistryKeys" Guid="17A55BEA-605D-425a-AAEE-F35EC8C1061E" DiskId="1" KeyPath="yes">
<RegistryValue Id="##############RegInstallDir" Root="HKLM" Key="Software/##############/##############" Name="InstallPath" Action="write" Type="string" Value="[INSTALLLOCATION]" />
<RegistryValue Id="##############RegLibraryPath" Root="HKLM" Key="Software/##############/##############" Name="LibraryPath" Action="write" Type="string" Value="[INSTALLLOCATION]Library" />
<RegistryValue Id="##############RegModelLibraryPath" Root="HKLM" Key="Software/##############/##############" Name="ModelLibraryPath" Action="write" Type="string" Value="[MODELLIBPATH]" />
<RegistryKey Id="##############Reg#####PluginKey" Root="HKLM" Key="Software/McNeel/#####ceros/4.0/[#####4.RECENT]/Plug-ins/FCAF502A-1572-42a9-A2C3-F25D7953B1A5/PlugIn" Action="create" />
<RegistryValue Id="##############RegName#####4" Root="HKLM" Key="Software/McNeel/#####ceros/4.0/[#####4.RECENT]/Plug-ins/FCAF502A-1572-42a9-A2C3-F25D7953B1A5" Name="Name" Action="write" Type="string" Value="##############Server" />
<RegistryValue Id="##############Reg#####4" Root="HKLM" Key="Software/McNeel/#####ceros/4.0/[#####4.RECENT]/Plug-ins/FCAF502A-1572-42a9-A2C3-F25D7953B1A5" Name="FileName" Action="write" Type="string" Value="[INSTALLLOCATION]##############/##############Server.rhp" />
<RemoveRegistryKey Id="##############Skin" Root="HKLM" Key="Software/McNeel/#####ceros/4.0/Scheme: ##############" Action="removeOnInstall" />
</Component>
<Component Id="VRayKeys" Guid="{96E9EBAC-48B4-4517-9409-F921BE92B3AA}" DiskId="1" KeyPath="yes" NeverOverwrite="yes">
<RegistryValue Id="VRayKey" Root="HKLM" Key="Software/##############/Data" Name="Data" Action="write" Type="string" Value="FFFAAA" />
</Component>
<Component Id="VRayRegistryKeys" Guid="{4D8815FA-85E2-421f-8BF9-F7F5A4133E96}" DiskId="1" KeyPath="yes" NeverOverwrite="yes" Permanent="yes">
<Condition>
NOT VRAYCOMMONDIR
</Condition>
<RegistryValue Root="HKLM" Key="Software/ASGvis" Name="common_dir" Action="write" Type="string" Value="[INSTALLLOCATION]VRay/ASGVIS" />
</Component>
</Directory>
<Feature Id="##############Features" Title="#####" Level="1">
<ComponentGroupRef Id="##############" />
<ComponentRef Id="##############LibraryUserPermissions" />
<ComponentRef Id="##############SharedUserPermissions" />
<ComponentRef Id="##############RegistryKeys" />
<ComponentRef Id="VRayRegistryKeys" />
<ComponentRef Id="VRayKeys" />
<ComponentRef Id="ProgramMenuShortcuts" />
<ComponentRef Id="#####App" />
<ComponentRef Id="WixShortCut" />
<ComponentRef Id="##############ShortCut" />
<ComponentRef Id="TroubleShortCut" />
<ComponentRef Id="DesktopShortcut" />
<ComponentRef Id="VRayAuth" />
<ComponentRef Id="Fonts" />
</Feature>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
<UI />
</Product>
<Fragment>
<Icon Id="ShortCutIcon" SourceFile="D:/##############Stage/Input_WIX/NonHeat/##############.exe" />
<Icon Id="TroubleShooterIcon" SourceFile="D:/##############Stage/Input_WIX/Heat/TroubleShooter/TroubleShooter.exe" />
<Icon Id="TeamViewerIcon" SourceFile="D:/##############Stage/Input_WIX/Heat/support.exe" />
<DirectoryRef Id="ProgramFilesFolder">
<Component Id="ProgramMenuShortcuts" Guid="881BD571-4FAF-4aa4-AB6E-15BB1629BE06">
<CreateFolder Directory="ProgramMenuDir" />
<RemoveFolder Id="RemoveMenuShortcuts" Directory="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software/##############/##############ShortCut" Name="InstalledStartMenuShortcuts" Type="integer" Value="1" />
</Component>
</DirectoryRef>
<!-- This file is not Heat''ed, so we need this to install the executable -->
<DirectoryRef Id="INSTALLLOCATION" FileSource="Files">
<Component Id="##############App" Guid="FA41A015-7D80-4e50-A909-94BBA4D7546A">
<File Id="#####_Executable" Vital="yes" Source="D:/##############Stage/Input_WIX/NonHeat/##############.exe" />
</Component>
</DirectoryRef>
<DirectoryRef Id="INSTALLLOCATION" FileSource="Files">
<Component Id="WixShortCut" Guid="{8F2596B8-B7EC-4f40-AD64-DFC182A9353A}">
<RegistryKey Root="HKCU" Key="Software/##############/##############ShortCut" Action="create">
<RegistryValue Name="ShortCut" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<Shortcut Id="ProgramMenuApplicationShortcut" Name="##############" Target="[###############_Executable]" Directory="ProgramMenuDir" Show="normal" Icon="ShortCutIcon" />
</Component>
</DirectoryRef>
<DirectoryRef Id="INSTALLLOCATION">
<Component Id="TroubleShortCut" Guid="{9E960528-8798-41DD-8DEE-9C3336CD3C88}">
<RegistryKey Root="HKCU" Key="Software/#####/#####ShortCut" Action="create">
<RegistryValue Name="ShortCut2" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<Shortcut Id="TroubleshooterStartmenuShortcut" Name="Troubleshooter" Target="[INSTALLLOCATION]TroubleShooter/TroubleShooter.exe" Directory="ProgramMenuDir" Icon="TroubleShooterIcon" Show="normal"></Shortcut>
</Component>
</DirectoryRef>
<DirectoryRef Id="INSTALLLOCATION">
<Component Id="TeamViewerShortCut" Guid="{AD99CAC6-E485-444B-B075-2FD8BE4C87A8}">
<RegistryKey Root="HKCU" Key="Software/#####/#####ShortCut" Action="create">
<RegistryValue Name="ShortCut3" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<Shortcut Id="TeamviewerStartmenuShortcut" Name="Remote Assistance" Target="[INSTALLLOCATION]support.exe" Directory="ProgramMenuDir" Icon="TeamViewerIcon" />
</Component>
</DirectoryRef>
<DirectoryRef Id="INSTALLLOCATION" FileSource="Files">
<Component Id="DesktopShortcut" Guid="{EA9632D1-08ED-4257-A78F-B2373A65A5CF}">
<RegistryKey Root="HKCU" Key="Software/#####/##############ShortCut" Action="createAndRemoveOnUninstall">
<RegistryValue Name="desktopShortcut" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<Shortcut Id="DesktopShortcut" Directory="DesktopFolder" Name="#####" Icon="ShortCutIcon" Target="[######_Executable]" />
</Component>
</DirectoryRef>
<DirectoryRef Id="FontsFolder">
<Component Id="Fonts" Guid="{8C8EE16C-92B6-4926-A41C-55B79429071C}" NeverOverwrite="yes">
<File Id="bradley" Source="Fonts/bradhitc.ttf" TrueType="yes" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="#####4.SYSTEM">
<Component Id="VRayAuth" Guid="{ABED80D1-6EBA-48db-83E0-7CF48B0A55E8}">
<File Id="VRayAuthFile" KeyPath="yes" Source="../../Libraries/VRayAuth.dll" />
</Component>
</DirectoryRef>
</Fragment>
</Wix>
Las aplicaciones introductorias de Bootstrapper de Heath Stewart proporcionan un ejemplo básico en su blog.
Necesitas crear un proyecto separado de arranque de WiX. Consulte Creación de paquetes de paquetes de instalación en la documentación de WiX 3.6.
Una vez que tenga su bootstrapper, todo lo que necesita hacer es:
Agregue una referencia al archivo
WixNetFxExtension.dll
en su proyecto de aplicación bootstrapper / managed bootstrapper.Agregue lo siguiente como el primer artículo en su cadena.
<PackageGroupRef Id="NetFx40Web"/>
Eso es. Más información y opciones están en la documentación de WixNetfxExtension .