2011-12-21 3 views
2

私の無知のために私を許して - 私はいくつかの読書をしてきましたが、まだ何かを試して準備ができていません。WIXインストーラのファイルを自動的に収穫する際のディレクトリ構造の柔軟性は?

現在、私たちは簡単にメンテナンスすることができない.wxsファイルを持っています。ファイルはすべて、SVNから新しいファイルを作成/削除するたびに手動で追加/削除されます。新しいファイルの作成と.wxsのインストールファイルの更新の間にボールがドロップされるため、私たちは常にインストールビルドを壊してしまいました。

このように、私は自動的にソリューション内のファイルを収穫したいと思います。 HOW TO CONSUME MSDEPLOY STAGED WEB SITE OUTPUT IN A WIX INSTALLERは私がやりたいことを概説しているようだが、それは私の主な懸念事項の一つには触れていない。すなわち、このようなファイルを収穫すると、ディレクトリ構造のカスタマイズが可能になるのですか?または、インストーラがソリューションを模倣している場所にファイルをインストールしますか?

"新しいファイルとフォルダを自動的に検出する"から "新しいファイルを自動的にどこに置くかを知る"という論理的な飛躍を目指すのは苦労しています。 「この親フォルダの下にあるすべてのファイルとフォルダは、[他の定義されたディレクトリ]にインストールする必要があります」などの事前定義されたアクションを設定する方法はありますか?

ありがとうございました。

答えて

3

私はWiXをASP.netで使用していますが、インストール中に実行されるWebサイトのファイルとデータベーススクリプトをすべて動的に含めるようにしてください。

私はそう

<HeatDirectory 
        ToolPath="$(WixToolPath)" 
        Directory="$(WebRoot)" 
        GenerateGuidsNow="yes" 
        ComponentGroupName="MasterPlanWeb" 
        OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\wwwfiles.wxs" 
        SuppressFragments="yes" 
        DirectoryRefId="WEBROOT" 
        KeepEmptyDirectories="yes" 
        PreprocessorVariable="var.WebRoot" 
        SuppressRegistry="yes" 
        SuppressRootDirectory="yes" 
        SuppressCom="yes" /> 

のような熱のタスクを使用して、溶液からファイルを抽出して、私のメインのWiXスクリプトでそれらを

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="INSTALLLOCATION" Name="MasterPlan"> 
     <Directory Id="WEBROOT" Name="wwwroot" /> 
     <Directory Id="DATABASESRC" Name="databasesrc" /> 
     </Directory> 
    </Directory> 

これらの2つの部分の間のリンクあるかのように参照されます最初のxmlチャンクのDirectoryRefIdと2番目のXMLチャンクのディレクトリID。

私のHEATedディレクトリの下にあるソリューション構造は基本的にコピーされますが、ルートを変更することはできます。例えば

私はCの上にHEATを実行する場合:\

  • 人\ \ \名前がMyWebSiteと、そのディレクトリが

    • が含まれているこれらのサブディレクトリがなる

    \スクリプト\ \

  • アカウント含まれています。

    ユーザーは、Cを選択した場合に、第2の部分は、私はインストール時にルートディレクトリを設定することができます:以下のディレクトリにインストールするためのディレクトリとして\テストが作成されます(その加熱されたコンテンツに)

    • あなたが本当にinstancのルートの下に置かすべてのデータを持っているサブディレクトリを望んでいた場合

    \ \テスト\スクリプト:C:\テストは、人々

  • C \ \:\テスト\は\
  • Cを占めますあなたはすべてのフォルダをループすることができ、同じコマンドを実行して、すべて同じDirectoryRefIdを指定することができます。

  • +0

    +1 HeatDirectoryタスクを表示します。私がこれまでに読んだその他の質問はすべて、事前ビルドタスクとしてheat.exeを実行することについてのみ話します。 – vossad01

    関連する問題