6

私は WiX とカスタム インストーラーのセットアップ全般にまったく慣れていないので、質問のトピックについてお詫び申し上げます。

私は社内のビジネス アプリケーション (ダイアリー) を持っていますが、これはビルドしてうまく機能します。そのため、WiX プロジェクトを追加し、ダイアリーの csproj を参照する方法については、チュートリアル/公式ドキュメントに従いました。

次に、この最も基本的なバージョンの WiX インストーラーをビルドして実行すると、出力ディレクトリに 1 つの exe ファイルが残ります。これは、ファイルが見つからないという例外でロードした直後にクラッシュします。

私の推測では、CSProj で参照されている Crystal Report または NLog のいずれも組み込まれていません。

私の質問はこれです.WIXにそれらのプロジェクト参照を出力に含めてビルドするにはどうすればよいですか???

どんな助けでも大歓迎です!/アントニー

4

2 に答える 2

11

残念ながら、プロジェクトを正しく行うには手作業が必要です。.wixproj ファイルを編集する必要がある次の 2 つの方法のいずれかを使用します。

  1. HeatProjectタスクを使用します。参照されているすべてのプロジェクトに対してこれを行う必要があり、それらすべてに対して個別の .wxs ファイルが提供されます。この後、WIX ベースのセットアップの機能でこれらのファイルのコンポーネント グループを参照します。

    <Target Name="BeforeBuild">
      <HeatProject ToolPath="$(WixToolPath)" AutogenerateGuids="true" OutputFile="OutputFile.wxs" SuppressFragments="true" Project="ReferencedProject.csproj" ProjectOutputGroups="Binaries" />
    </Target>
    
  2. HeatDirectoryタスクを使用します。UniqueComponentGroupName以下は、参照されているプロジェクトのバイナリを含む、プロジェクトの bin フォルダー内のすべてをピックアップし、任意の機能に含めることができる単一の .wxs を提供します。

    <Target Name="BeforeBuild">
      <PropertyGroup>
        <DefineConstants>BINFOLDER=PATH\TO\YourProject\bin\$(Configuration)</DefineConstants>
      </PropertyGroup>
      <HeatDirectory OutputFile="OutputFile.wxs" Directory="PATH\TO\YourProject\bin\$(Configuration)" KeepEmptyDirectories="true" DirectoryRefId="INSTALLFOLDER" ComponentGroupName="UniqueComponentGroupName" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" PreprocessorVariable="var.BINFOLDER" />
    </Target>
    
于 2013-10-31T10:13:22.503 に答える
2

古いバージョンの Visual Studio の (現在は廃止された) Setup Project プロジェクトとは異なり、WiX は自動参照検出を行いません。メイン プロジェクトの場合と同様に、参照される各プロジェクトを手動で WiX プロジェクトに追加する必要があります。

于 2013-10-30T17:21:27.380 に答える