2014-11-10 11 views
8

Sto cercando di creare un ExePackage [utilizzando la proprietà downloadURL] nel mio fagotto che scarica SQL Express 2014 e lo installa utilizzando il seguente codiceCome creare un Wix Exepackage che solo ha un link per il download

<ExePackage Id="Sql2014Express" 
    DisplayName="SQL Server 2014 Express" 
    Cache="no" 
    Compressed="no" 
    PerMachine="yes" 
    Permanent="no" 
    Vital="yes" 
    Name="SQLEXPRWT_x64_ENU.exe" 
    DownloadUrl="http://download.microsoft.com/download/E/A/E/EAE6F7FC-767A-4038-A954-49B8B05D04EB/ExpressAndTools%2064BIT/SQLEXPRWT_x64_ENU.exe" 
    InstallCommand="/ACTION=Install /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /SECURITYMODE=SQL [SqlVariable] /TCPENABLED=1 /SQLSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /SQLSVCSTARTUPTYPE=Auto /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /ADDCURRENTUSERASSQLADMIN=FALSE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms" 
    UninstallCommand="/Action=Uninstall /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /Q /HIDECONSOLE" 
    DetectCondition="SqlInstanceFound" 
    InstallCondition="$(var.ServerInstall)"> 
    <ExitCode Value ="3010" Behavior="forceReboot" /> 
    </ExePackage> 

quando provo e crea il pacchetto di installazione ricevo il seguente errore ....

Error 2 The system cannot find the file 'SourceDir\SQLEXPRWT_x64_ENU.exe'. 

posso impostare la proprietà SourceFile in un file locale e comprendono che nella mia installazione, ma io preferirei non dover muoversi un file 800mb + con il mio programma di installazione.

+0

@ Non configurato, perché non sei sicuro del motivo per cui sei entrato e hai estratto la parte di testo della mia modifica. Questo scambio ha informazioni veramente utili che ho sprecato un sacco di cicli di ricerca perché il termine DownloadUrl non appariva nel testo o nel titolo. L'ho aggiunto a) forse aiutare le ricerche eb) ottenere il termine nella prima riga della domanda in modo che qualcuno che fa clic sulla domanda lo veda immediatamente. –

risposta

12

Se si imposta il pacchetto su Compressed=no non includerà il file di origine nel pacchetto finale. Il motivo per cui stai ricevendo il "File non trovato" è perché quando viene creato il programma di installazione, richiede una versione locale del file EXE del pacchetto per ottenere informazioni da esso. Se si desidera creare un progetto con un solo URL di download, è necessario specificare un elemento RemotePayload e fornire ulteriori informazioni sulla definizione del pacchetto remoto.

Ciò consentirà di creare il pacchetto di installazione senza dover disporre del file di origine sulla macchina, ma sarà necessario assicurarsi che il carico utile sia descritto correttamente o che l'installazione non riesca.

Sul vostro elemento ExePackage, essere sicuri di includere l'attributo Name, che è uno degli attributi richiesti accanto a SourceFile, ma SourceFile non è consentito con RemotePayload. Il tuo esempio lo include, quindi dovresti essere OK lì.

includere l'elemento <RemotePayload> come figlio di ExePackage in questo modo:

<RemotePayload Description="MyRemoteApp" ProductName="MyProductName" Size="size-in-bytes" Version="1.1.1.1" Hash="SHA-1-checksum-here"/> 

in cui tutte le informazioni richieste sono attributi del vostro pacchetto specifico. Se questa non è un'opzione, è necessario assicurarsi che il file di origine sia disponibile localmente in fase di build, ma assicurarsi che non sia compresso, in modo che l'utente possa installarlo e il payload verrà scaricato dal proprio URL.

Vedere il riferimento RemotePayload per ulteriori informazioni.

+0

Sai dove posso trovare facilmente le dimensioni in byte e l'hash md per varie installazioni di Microsoft? – PlTaylor

+0

La dimensione del file può essere visualizzata nella pagina di download, ma la cosa più semplice potrebbe essere semplicemente scaricarlo e usare explorer per dirlo. Per SHA-1/MD5, se la pagina di download non la elenca, è possibile calcolarla utilizzando qualsiasi utility di calcolatrice supportata sul proprio sistema. [Questo] (http://support.microsoft.com/kb/841290) dovrebbe essere in grado di farlo per te. –

+0

Per hash è anche possibile utilizzare il comando Get-FileHash PowerShell (potrebbe non essere disponibile su sistemi precedenti) – LOST

3

La risposta di RyanJ è eccezionale. Mi ha messo fuori squadra dopo aver fallito nel trovare la giusta combinazione magica per conto mio. Ma mi è costato ancora un po 'di tentativi per creare un file bundle wxs che funzionasse effettivamente. Così, per la cronaca, se si crea un nuovo progetto fascio in Visual Studio e quindi sostituire i contenuti bundle.wxs con:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Bundle 
Name="BundleExperiment" 
Version="1.0.0.0" 
Manufacturer="Windows User" 
UpgradeCode="UNIQUE-GUID-GOES-HERE-YADADADA" 
Compressed="no"> 

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

<Chain> 
    <ExePackage Id="DymoLabelSoftware" 
     SourceFile="DLS8Setup.8.5.1.exe" 
     DownloadUrl="http://download.dymo.com/dymo/Software/Win/DLS8Setup.8.5.1.exe" /> 
</Chain> 
</Bundle> 

si può vedere come funziona e poi modificarlo per lavorare con qualunque pacchetto exe si sta cercando di raggruppare. *

Era davvero controintuitivo per me che era necessario specificare i valori per SourceFile AND DownloadUrl E avere ancora una copia del file scaricato nella directory del progetto. In realtà, era più che controintuitivo. Ero certo che NON avendo il file scaricato nella mia directory di progetto fosse come ho detto a Burn di omettere il file dal pacchetto.Ma ecco come io ora capisco:

  • 'Compressed = 'no'' - dice Brucia di non incorporare l'exe nella installazione in bundle si sta costruendo
  • 'SourceFile = "DLS8Setup.8.5.1 .exe "'- dice Burn per andare alla directory del progetto e utilizzare la copia locale, scaricata, locale per generare tutte le informazioni che dovresti altrimenti devi capire e inserire il tuo record RemotePayload
  • 'DownloadUrl = ...' - è l'unica parte che mi è sembrata ovvia sin dall'inizio

* "Con qualsiasi cosa stai cercando di raggruppare" disclaimer: inizialmente ho provato, davvero difficile, a utilizzare un pacchetto di installazione di Git per Windows per questo esempio. E, usando esattamente la stessa sintassi (e nomi e percorsi corretti, davvero!), L'installazione in bundle ha sempre fallito con un errore di accesso e un messaggio come "impossibile acquisire il payload" nel file di log. L'unica cosa strana riguardo al download di Git che ho notato è che non proviene realmente dall'URL che stavo usando, ma stavo reindirizzando il download per venire da qualche parte nel cloud di Amazon S3. La mia ipotesi è che Burn/WIX/Windows Installer possa opporsi a quel gioco di prestigio - e un po 'ragionevolmente. Quindi, a seconda del programma di installazione che si desidera raggruppare, potrebbe essere necessario assegnargli un URL fisso sotto il proprio controllo per farlo funzionare con questa funzione.