2011-11-29 20 views
5

Actualmente estoy escribiendo un instalador WIX que tiene algunas dependencias con otros productos que se instalan. Es en C# y requiere las siguientes dependenciasWIX Office Detection Extension

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

Ahora para .NET Framework pueda utilizar WixNetFxExtension en Wix decir

<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/> 

y haga referencia a esta propiedad en una condición.

¿Hay una extensión similar a hacer esto para diferentes versiones de Office o sus archivos individuales como Word, etc.

Sé que puedo utilizar acciones personalizadas para hacer esto, pero quiero un sencillo era hacer esto en vez que crear mis propias acciones personalizadas?

+3

favor, eche un vistazo a este post http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office – Ciprian

+1

Realmente quería una extensión de wix que pudiera usar. En realidad, ahora he creado mi propia extensión que le permite pasar un nombre de aplicación y devuelve la versión instalada ... Publicaré mi solución una vez que la haya limpiado. –

Respuesta

-2

terminé creando mi propia WIXExtension para esto y luego simplemente podría llamar a mi método de extensión OfficeVersion ("Palabra") para obtener la versión de Word, etc. instalado.

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

Podría establecer una condición para solo instalar la aplicación si la versión es mayor de 10, por ejemplo.

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

Luego tengo la libertad de escribir mi OfficeVersion para devolver la versión de la aplicación que envíe.

Hay un lugar en el registro descubrí que mantiene esta información para aplicaciones de Office

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

etc.

+0

¿Alguna vez publicó su extensión en algún lugar? Sería genial evitar todo el pirateo manual del registro. ¡Gracias! – BrainSlugs83

+0

Es un poco excesivo (sobre ingeniería) escribir esto como una extensión si no la está compartiendo con el mundo. Un fragmento simple reutilizado internamente por todos sus instaladores hubiera sido suficiente. –

+0

¿Dónde puedo encontrar su extensión? Esta respuesta es completamente inutilizable sin saber cómo funciona la extensión. –

6

Usando la respuesta dada por @Ciprian, puede simplemente establecer una propiedad, luego tener una condición de inicio basada en la propiedad.

<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

Gracias por la respuesta, realmente estaba buscando la versión actual instalada de una aplicación, sin consultar una clave de registro conocida. Lo he resuelto creando mi propia extensión wix que le permite pasar un nombre de aplicación y le dice qué versión está instalada –

+0

¿funciona esto para todas las versiones de la oficina? –

+0

@JoeHealy Vea: http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office lists hasta 2016 –