0

だから私はWIXに基づいた展開プロジェクトを持っています。そこに機能やファイルを含めることができることに気づきました。ただし、DEV / QA環境が選択されている場合にのみ、特定のファイルをデプロイしたいと思います。彼らがプロダクションを選択した場合、私はそれがこの特定のファイルを無視することを望みます。

.wxiファイルに、変数の特定の値に基づいて機能/ディレクトリとファイルを条件付きで含める方法はありますか?

すなわち。以下のようなものが欲しいです-潜在的にcomponentRefが動的に含まれていますか?(私は値をサニタイズしました)。

<Feature Id="MyApplication" Title="MyApp" Description="My Application" ConfigurableDirectory="MYAPP" Level="1">
      <ComponentRef Id="AppEmailTemplatesDir" />
 </Feature>

そしてさらに下へ

<Directory Id="EmailTemplatesDir" Name="EmailTemplates">
    <Component Id="AppEmailTemplatesDir" Guid="{A-GUID}">
         <File Id="EmailTemplate1.htm" Name="EmailTemplate1.htm" DiskId="1" Source="..\..\EmailTemplates\EmailTemplate1.htm" />
    </Component>
</Directory>

何か案は?カスタムアクションコード(VB.NET)はありますが、ファイルを含めるコードを作成する以外に、それをどのように使用できるかわかりません。

4

2 に答える 2

1

これを行うにはさまざまな方法があるようです...これは、VisualStudio2013で私のために働いたものです。

  1. WiXプロジェクトのプロパティ/ツール設定で、これを追加パラメータ/コンパイラに追加します::

    -dReleaseType=$(ReleaseType)
    
  2. 追加ファイルのみを含むコンポーネントグループを作成します(これは読者の演習として残されています)

  3. メイン.wxsファイルに次のようなものを追加します。ここPDBFileで、は手順2のコンポーネントグループのIDです。

    <!-- Installs a PDB file for daily builds -->
    <?if $(var.ReleaseType) = daily ?>
      <ComponentGroupRef Id="PDBFile"/>
    <?endif?>
    
  4. 環境に設定されdevenvたWiXプロジェクトをビルドするために実行しますReleaseType

于 2017-03-09T19:50:40.460 に答える
0

Component NeverOverwriteOption = "yes"オプションを使用して、ファイルが存在するときにインストーラーがファイルを上書きしないようにすることができるようです。

環境条件を理解するのが簡単でない限り、これは私が必要としていることを達成しているようです。それは、本番環境でファイルを上書きしないことです。

また、アンインストール時にすべてのフォルダーが(予想どおりに)削除されることもわかりましたが、テンプレートパスを維持するために、Permanent="yes"属性を使用できます。

話し合いの結果、すべてのファイルをソース管理下に置き、それらを展開することにしました。しかし、少なくとも私はNeverOverwriteOptionとPermanentについて学びました:)

于 2012-10-10T00:07:58.113 に答える