2011-11-29 16 views
5

Attualmente sto scrivendo un WIX Installer che ha alcune dipendenze su altri prodotti da installare. E 'in C# e richiede le seguenti dipendenzeWIX Office Detection Extension

  • Office 2010 (tra cui Excel/Word)
  • .NET Framework 3,5

Ora per il .NET Framework posso usare WixNetFxExtension in Wix da dire

<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/> 

e quindi fare riferimento a questa proprietà in una condizione.

C'è un'estensione simile a fare questo per diverse versioni di Office o dei loro singoli file come Word ecc

So che posso usare azioni personalizzate per fare questo, ma voglio un semplice è stato quello di fare questo piuttosto di creare le mie azioni personalizzate?

+3

Si prega di dare un'occhiata a questo post http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office – Ciprian

+1

Avevo davvero bisogno di un'estensione per wix che potevo usare. In questo momento ho creato la mia estensione che consente di passare un nome di applicazione e restituisce la versione installata ... Pubblicherò la mia soluzione una volta ripulita. –

risposta

-2

ho finito per creare il mio WIXExtension per questo e poi semplicemente potuto chiamare il mio metodo di estensione OfficeVersion ("Word") per ottenere la versione di Word ecc installato.

<Property Id="WORD_VERSION" Value="$(myextension.OfficeVersion(Word))" /> 

Potrei quindi impostare una condizione per installare solo l'applicazione se la versione è maggiore di 10 per esempio.

<Condition Message="This setup requires Word xxxx and Excel xxxx or greater"> 
    <![CDATA[Installed OR (WORD_VERSION AND EXCEL_VERSION >= "10")]]> 
</Condition> 

Quindi sono libero di scrivere la mia OfficeVersion per restituire la versione di qualsiasi applicazione inviata.

C'è un luogo nel Registro di sistema ho scoperto che detiene tali informazioni per le applicazioni di Office

HKLM\Software\Classes\Word.Application\CurVer 
HKLM\Software\Classes\Excel.Application\CurVer 

ecc

+0

Hai mai pubblicato la tua estensione ovunque? Sarebbe davvero fantastico evitare tutti gli hacker di registro manuali. Grazie! – BrainSlugs83

+0

È un po 'eccessivo (sovradimensionato) scrivere questo come un'estensione se non lo si condivide con il mondo. Un semplice frammento riutilizzato internamente da tutti gli installer sarebbe stato sufficiente. –

+0

Dove posso trovare la tua estensione. Questa risposta è completamente inutilizzabile senza sapere come funziona l'estensione. –

6

Utilizzando la risposta fornita da @Ciprian, è possibile semplicemente impostare una proprietà, quindi avere una condizione di avvio in base alla proprietà.

<Property Id="OFFICEPATH"> 
    <RegistrySearch Id="OfficeReg" Root="HKLM" Key="SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot" Name="Path" Type="raw" /> 
</Property> 

<Condition Message="This application requires Microsoft Office. Please install Office then run this installer again."> 
     <![CDATA[Installed OR (OFFICEPATH)]]> 
    </Condition> 
+1

Grazie per la risposta, sono stato davvero dopo aver recuperato la versione corrente installata di un'applicazione, non interrogando per una chiave di registro nota. Ho risolto questo creando la mia estensione wix che ti permette di passare un nome di applicazione e ti dice quale versione è installata –

+0

funziona per tutte le versioni di office? –

+0

@JoeHealy Vedi: http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office liste fino al 2016 –