2012-01-26 8 views
24

Ho tentato di creare un esempio funzionante di uno script di installazione di WiX 3.6. Attualmente utilizziamo WiX 3.5 e ora vorremmo iniziare a installare .NET 4 Client Profile framework come prerequisito per il nostro file MSI creato dal nostro script product.wxs. WiX 3.6 sembra la migliore via da seguire.Un esempio completo di bundle WiX 3.6 che esegue l'avvio di un profilo client .NET 4.

Esiste un esempio funzionale di come farlo con WiX 3.6?

ecco il nostro 3,5 sceneggiatura che usiamo oggi:

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

risposta

3

È necessario creare un progetto separato bootstrapper WiX. Vedi Building Installation Package Bundles nella documentazione di WiX 3.6.

+1

Il documento BryanJ menzionato è stato installato con Wix 3.6. Puoi trovarlo nel menu Start di Windows. – deerchao

1

Una volta ottenuto il programma di avvio automatico, tutto quello che dovete fare è:

  1. Aggiungere un riferimento al file WixNetFxExtension.dll nel vostro gestito progetto di programma di avvio automatico/applicazione di avvio automatico.

  2. Aggiungere quanto segue come primo elemento della catena.

    <PackageGroupRef Id="NetFx40Web"/> 
    

Questo è tutto. Ulteriori informazioni e opzioni sono disponibili in the WixNetfxExtension documentation.

+5

Non ha una catena quindi non vedo come sia utile. – Jeff

+2

Personalmente direi che * è * utile, in quanto la risposta scelta dall'opt per definizione richiede una catena (infatti tutte le risposte riguardano i bootstrap). Una volta che hai il tuo bootstrapper come nel link di KMoraz, aggiungere il pre-requisito richiesto è semplice come aggiungere la riga PackageGroupRef. –

+0

La parte difficile è il bootstrap, non il riferimento. Non lo considero una risposta opportuna. – LeoPucciBr