2010-06-10 2 views
7

Rispondendo a una domanda precedente I asked here, ora devo passare a vs2010.Come posso creare un programma di installazione WiX 3.5 con un programma di installazione di .NET 4.0 completamente autonomo?

Ho ottenuto la build settimanale più recente di WiX 3.5, la versione del 5 giugno 2010.

Ecco le linee interessate dal mio installatore:

 <ItemGroup> 
     <BootstrapperFile Include="Microsoft.Net.Framework.4.0"> 
      <ProductName>.NET Framework 4.0</ProductName> 
     </BootstrapperFile> 
     <BootstrapperFile Include="Microsoft.Windows.Installer.4.5"> 
     <ProductName>Windows Installer 4.5</ProductName> 
     </BootstrapperFile> 
     </ItemGroup> 

e

<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" /> 

Tuttavia, è solo non funziona. In vs2010 ci sono punti esclamativi accanto ai file .NET Framework 4.0 e Windows Installer 4.5 e la pagina delle proprietà li elenca come "Unknown BuildAction BootstrapperFile" e la build non sembra installare .NET 4.0. L'avvertimento è rilevante:

C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'. 

risposta

12

La risposta breve è quello di cambiare

<ItemGroup> 
    <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" > 
     <ProductName>.NET Framework 3.5 SP1</ProductName> 
    </BootstrapperFile> 
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
     <ProductName>Windows Installer 3.1</ProductName> 
    </BootstrapperFile> 
</ItemGroup> 

<Target Name="setup"> 
    <GenerateBootstrapper 
     ApplicationFile="myproduct.msi" 
     ApplicationName="myproduct" 
     BootstrapperItems="@(BootstrapperFile)" 
     Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" 
     ComponentsLocation="Relative" 
     OutputPath="$(cddir)" 
     Culture="en"/> 
</Target> 

a

<ItemGroup> 
    <BootstrapperFile Include=".NETFramework,Version=v4.0" > 
     <ProductName>.NET Framework 4.0</ProductName> 
    </BootstrapperFile> 
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
     <ProductName>Windows Installer 3.1</ProductName> 
    </BootstrapperFile> 
</ItemGroup> 

<Target Name="setup"> 
    <GenerateBootstrapper 
     ApplicationFile="myproduct.msi" 
     ApplicationName="myproduct" 
     BootstrapperItems="@(BootstrapperFile)" 
     Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" 
     ComponentsLocation="Relative" 
     OutputPath="$(cddir)" 
     Culture="en"/> 
</Target> 

L'ho trovato andando nella directory del bootstrap SDK (C: \ Programmi \ Microsoft SDK \ Windows \ v7.0A \ Bootstrapper) sulla mia macchina, per Visual Studios 2010. Sotto c'è una lista di progetti che può essere letto da Wix e incluso per il bootstrap. In ogni cartella c'è un file chiamato Product.xml. Dopo aver esaminato l'aiuto here per la creazione di un programma di installazione di .NET 3.5, ho scoperto che l'attributo ProductCode nel tag Product sembra identificare il nome dell'elemento boostrap, quindi quando ho cambiato il valore in quello indicato in C: \ Programmi \ Microsoft SDK \ Windows \ v7.0A \ Bootstrapper \ Packages \ DotNetFX40 \ Product.xml ha funzionato.

+0

Questo capito, grazie. Sono contento che abbiano deciso di cambiare la struttura dei loro comandi, che è stato molto utile e necessario. – mmr

+0

Avevo anche questo problema in VS2010 e questa soluzione ha funzionato perfettamente (grazie!), Tranne per il problema estetico che il punto esclamativo persiste ancora accanto ai pacchetti bootstrap. Tuttavia, il programma di installazione si basa completamente sui pacchetti bootstrap e si installa come previsto. Se qualcuno sa che cosa causa il punto esclamativo e come eliminarlo, per favore aggiungilo qui. Grazie! –