2011-11-29 15 views
5

現在、インストールされている他の製品にいくつかの依存関係があるWIXインストーラを作成しています。これは、C#であり、次の依存関係が必要です(エクセル/ワードを含む)Office 2010のWIX Office Detection Extension

  • .NET Frameworkの私が言うことをWiXのでWixNetFxExtensionを使用することができ、.NET Frameworkのための今すぐ

3.5

<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/> 

この条件を条件で参照してください。

は、WordなどのOfficeまたは個々のファイルの異なるバージョンのためにこれを行うには同様の拡張は、私がこれを行うには、カスタムアクションを使用することができます知っているが、私は単純ではなく、これを行うことだったたいなど

あります自分のカスタムアクションを作成するよりも

+3

などそれは、Officeアプリケーションのために、この情報を保持している

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

を発見し、レジストリ内の場所この記事をご覧くださいhttp://stackoverflow.com/questions/3266675があります/ how-to-detect-installed-ms-officeのバージョン – Ciprian

+1

私は実際に私が使うことができるwixへの拡張の後でした。私は実際にあなたがアプリケーション名を渡すことができる自分の拡張を作成し、それはインストールされているバージョンを返します...私はそれをきれいにしたら私のソリューションを投稿します。 –

答えて

-2

私は、このために私自身のWIXExtensionを作成し終わった後、単になどの単語のバージョンがインストールされて得るために、私の拡張メソッドのOfficeVersion(「言葉」)を呼び出すことができます。

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

たとえば、バージョンが10を超える場合、アプリケーションをインストールするための条件を設定できます。

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

私は、私がそれに送信するアプリケーションのバージョンを返すために私のOfficeVersionを自由に書くことができます。

私は

+0

拡張機能はどこにでも公開していますか?すべての手動レジストリのハッキングを避けることは本当にクールです。ありがとう! – BrainSlugs83

+0

あなたが世界と共有していない場合は、これを拡張機能として記述するのは少し余計です(設計したものを超える)。すべてのインストーラによって内部的に再利用される単純なフラグメントは十分です。 –

+0

あなたの内線はどこにありますか?この回答は、拡張機能の仕組みがわからなければ完全に使用できません。 –

6

@Ciprianによって与えられた答えを使用すると、単にプロパティを設定して、そのプロパティに基づいて起動条件を設定することができます。

<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

答えをありがとう、私は実際には、既知のレジストリキーを照会するのではなく、アプリケーションのインストールされている現在のバージョンを取得した。私はアプリケーション名を渡すことができる自分のwix拡張を作成することでこれを解決しました。インストールされているバージョンがわかります –

+0

すべてのバージョンのオフィスでこの作業を行いますか? –

+0

@JoeHealy参照:http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office 2016までのリスト –