2009-08-31 7 views
1

開発者が使用するMSBuild用のタスクを作成しました。このタスクと関連する.targetsファイルをProgram Files内のMSBuild extensionsフォルダ(通常はC:/Program Files/MSBuild(32ビットXP))。MSBuildエクステンションのインストール

これを正しく行うには、インストール時にそのフォルダの場所をシステムに尋ねます。この情報や他のインストーラプロパティを提供するレジストリキーはありますか?私はインストールのためにWiXを使うつもりです。

答えて

1

:彼らはMSBuildのフォルダを定義した部分で

ルックまさにこの(より:)

のようなものでwxiファイルを作成します。

<!-- Product name as you want it to appear in Add/Remove Programs--> 
<?if $(var.Platform) = x64 ?> 
    <!-- Product name as you want it to appear in Add/Remove Programs--> 
    <?define ProductName = "Custom MSBuild Tasks (64 bit)" ?> 
    <?define Win64 = "yes" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
<?else ?> 
    <?define ProductName = "Custom MSBuild Tasks" ?> 
    <?define Win64 = "no" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
<?endif ?> 

<!-- Directory name used under MSBuild --> 
<?define InstallName = "CustomTasks" ?> 

コンポーネントを定義する必要がある場合:

<Fragment Id="ComponentsFragment"> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="$(var.PlatformProgramFilesFolder)"> 
     <Directory Id="MSBuildFolder" Name="MSBuild"> 
     <Directory Id="INSTALLLOCATION" Name="$(var.InstallName)"> 
      ... Your custom .Targets and tasks go here 
+0

ありがとう。私が思ったように、MSBuildのパスはインストーラにハードコードされています。私は64と32ビットの間で切り替えるコードが好きです。しかし、私たちは現在、テスト対象の64ビットハードウェアを持っていないので、私が書いたものを検証できないときにサポートしようとしているのかどうかはわかりません。 –

+0

True :)また、ビジュアルスタジオ(2005年と2008年)にタスクスキーマを統合したい場合、私はWiXコードを使って、別の質問をして回答を投稿します。 – si618

2

Wix自体にはMSBuildタスクがあるので、どのように彼らがそれをしたかを見て、復活ソースはToolset.wxs(Googleコード検索)です。私たちが行う

<DirectoryRef Id="ProgramFilesFolder"> 
    <Directory Id="Dir_MSBuild" Name="MSBuild"> 
     <Directory Id="Dir_MSBuildMS" Name="Microsoft"> 
      <Directory Id="Dir_MSBuildMSWix" Name="WiX"> 
       <Directory Id="Dir_MSBuildMSWix35" Name="v3.5"> 
        <Component Id="WixMSBuildBinaries35" 
           Guid="2CB1EA5F-2542-4AFF-A05B-FAF576265F89" 
           Win64="no"> 
         <File Source="WixTasks.dll" Checksum="yes" 
           KeyPath="yes" Vital="yes" /> 
        </Component> 
       </Directory> 
      </Directory> 
     </Directory> 
    </Directory> 
</DirectoryRef> 

これは\プログラムファイル\ MSBuildの\マイクロソフト\ウィックス下ウィックスのMSBuildタスク(WixTasks.dll)をインストールします

+0

64ビットウィンドウを使用している場合は、間違ったフォルダにインストールされます。プログラムファイルやプログラムファイル(x86)を扱う他のコードを持っている必要があります。 実際に私はちょうど彼らのコードを掘った、それは見える?それらにはx86とx64の両方のコンポーネントが含まれていて、x64プラットフォームの場合はx86コンポーネントをx64コンポーネントで上書きするだけです。面白い:) – si618

関連する問題