2012-01-26 17 views
24

He intentado construir un ejemplo de trabajo de una secuencia de comandos de instalación de WiX 3.6. Actualmente usamos WiX 3.5 y ahora nos gustaría comenzar a instalar el .NET 4 Client Profile framework como un requisito previo para nuestro archivo MSI que crea nuestra secuencia de comandos product.wxs. WiX 3.6 parece ser la mejor manera de avanzar.Un paquete completo de WiX 3.6 ejemplo de arranque de un .NET 4 Client Profile

¿Hay algún ejemplo funcional de cómo hacer esto con WiX 3.6?

Aquí está nuestro script 3.5 usamos hoy en día:

<?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> 

Respuesta

3

Es necesario crear un proyecto de programa previo WiX separada. Consulte Building Installation Package Bundles en la documentación de WiX 3.6.

+1

El documento que BryanJ mencionó se instaló con Wix 3.6. Puedes encontrarlo en tu menú de inicio de Windows. – deerchao

1

vez que tenga su programa previo, todo lo que tiene que hacer es:

  1. agregar una referencia al archivo WixNetFxExtension.dll en su proyecto de aplicación de programa previo bootstrapper/administrado.

  2. Agregue lo siguiente como el primer elemento de su cadena.

    <PackageGroupRef Id="NetFx40Web"/> 
    

Eso es todo. Más información y opciones están en the WixNetfxExtension documentation.

+5

Él no tiene una cadena así que no veo cómo esto es útil. – Jeff

+2

Personalmente, yo diría que * es * útil, ya que la respuesta elegida por la operación requeriría, por definición, una cadena (de hecho, todas las respuestas se relacionan con los iniciadores). Una vez que tienes tu bootstrapper como en el enlace de KMoraz, agregar el requisito previo requerido es tan simple como agregar la línea PackageGroupRef. –

+0

La parte difícil es el arranque, no la referencia. No lo considero una respuesta apropiada. – LeoPucciBr

Cuestiones relacionadas