19

Wixを使用してWebサイトのインストールを作成しています。

フォントを追加するとき、WiXは.ttf拡張子を取得し、ローカルのFontフォルダーにインストールする必要があります(ディレクトリId="FontsFolder"およびTrueType="yes"を使用する場合)。これらの属性を削除すると、フォールオーバーします。

不平を言うことなくWiXにフォントをカスタムフォルダ(../Content/fonts/)にインストールさせる方法はありますか?

編集:

   <Directory Id="dirFontsFolder" Name="fonts">
       <Component Id="cfont.ttf" Guid="BDEBACC8-D057-4406-87B9-B310BA6DFE27">
           <File Id="font.ttf" Source="$(var.SrcWebsite)\Content\fonts\font.ttf" KeyPath="yes" />
       </Component>
   </Directory>

上記のコードでは、次のエラーが発生します。

エラーLGHT1076:ICE60:ファイルfont.ttfはフォントではなく、そのバージョンはコンパニオンファイル参照ではありません。「言語」列で指定された言語が必要です。

4

4 に答える 4

13

数か月後に問題が提起された後、私たちはなんとか問題を見つけることができました:

KeyPathソリューションは答えの半分でした(Alexの答えを参照)。WiXでKeyPath属性を使用しないと、以下のソリューションは機能しません。

もう1つの部分は、MSIをパッケージ化するときにWiXがリンカー(light.exe)を介して実行する内部整合性エバリュエーター(ICE)です。ICEルールICE07は、ファイルの内容をチェックし、ファイルがフォントであると判断した場合、Windows/Fontsでファイルを強制します。

これを防ぐには、light.exeの実行時にこのルールを無効にする必要があります。これを行うには、light.exeの後に-sice:パラメーターを追加します。この例では、次のようになります。

light.exe -sice:ICE07

-siceパラメータを追加することで、複数のルールを無効にできます。

于 2013-03-08T12:52:47.800 に答える
5

VSでも同じことができます。

セットアッププロジェクトを右クリックし、[プロパティ]をクリックします。

[ツール設定]タブを選択します。

ICE検証セクションでは、すべての警告、またはこの場合は特定の1つのICEXXを抑制することができます。

[ICE60]

また

同じTAB(ツール設定)で、コンパイラーまたはリンカーにパラメーターを追加できます。したがって、リンカーセクションに追加するだけです

[-sice:ICE60]

于 2014-10-03T15:46:20.600 に答える
5

設計によりWebサイトのfontsフォルダーにドロップするブートストラップglyphicons_halflings.ttfフォントの特定のケースでは、このソリューションはICE07警告を抑制せずに機能します

一致するwoff、eot、およびsvg Webフォントも同時にインストールするため、TTFファイルにコンパニオンファイルがあり、TrueTypeフォントではないことを指定できます。

WiXフラグメントを単純に作成して、Halflingsフォントファイルを次のようにサイトのフォントフォルダーに追加する場合:(必要に応じて部分的なGUIDを置き換えます)

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="WebsiteFontsDir">
            <Component Id="CMP_WebsiteFonts" Guid="{********-482C-4924-B06E-9FAC34F89D1D}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.eot" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.eot" />
                <File Id="glyphicons_halflings_regular.svg" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.svg" />
                <File Id="glyphicons_halflings_regular.woff" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.woff" />
            </Component>
            <Component Id="CMP_WebsiteFonts2" Guid="{********-BFFE-441D-B8F4-156DD596B09F}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.ttf" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.ttf" DefaultVersion="1.001" TrueType="yes" />
            </Component>
     </DirectoryRef>
</Fragment>

ファイルは正しい場所に追加されますが、ソリューションを構築すると、TTFフォントファイルをWindowsフォントフォルダーに配置する必要があるという事実を嘆くICE07検証警告が生成されます。

これはWebフォントであり、そこに行くことは想定されていませんが、非常に煩わしいですが、ありがたいことに、IE、Edge、Chrome、Firefoxなどをなだめるために多くの形式で必要なWebフォントであるため、作成できます。警告を排除するための非TTFフォントバリアントの存在の使用。

次のようにフラグメントをリファクタリングします。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="WebsiteFontsDir">
            <Component Id="CMP_WebsiteFonts" Guid="{********-482C-4924-B06E-9FAC34F89D1D}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.eot" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.eot" />
                <File Id="glyphicons_halflings_regular.svg" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.svg" />
                <File Id="glyphicons_halflings_regular.woff" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.woff" />
            </Component>
            <Component Id="CMP_WebsiteFonts2" Guid="{********-BFFE-441D-B8F4-156DD596B09F}">
                <File Id="glyphicons_halflings_regular.ttf" 
                  Source="$(var.ViewerModule.TargetDir)fonts\glyphicons-halflings-regular.ttf" 
                  TrueType="no" 
                  KeyPath="no"
                  CompanionFile="glyphicons_halflings_regular.eot"/>
            </Component>
        </DirectoryRef>
    </Fragment>
</Wix>

ここでは、そのTTFフォントを拒否し、他のWebフォントファイルの1つであるコンパニオンファイルを提供します。すべてが期待どおりにインストールされ、ICE07は生成されません。

于 2016-10-12T10:06:55.873 に答える
2
<Directory Id="WixWorkshop" Name="WixWorkshop">
  <Component Id="Component1" Guid="DE1705EF-B96A-4746-AA9F-2C9D598E7D08">
    <File Id="File1" Name="arial.ttf" Source="arial.ttf" KeyPath="yes"/>
  </Component>
</Directory>

うまく機能します-どのコンポーネントにもディレクトリへの参照が必要です

于 2012-10-31T08:00:42.840 に答える