4

私がやろうとしていることが実行可能かどうか、そして答えが「はい」の場合、それをどのように実行するかについて質問があります。

私はwixを初めて使用し、インストーラーにフォルダーを動的に含める方法について読んでいます。最終的には、heat.exeを使用してwxsファイルを生成し、後で新しく生成されたwxsファイルを追加するタスクをnantで実行できました。ライトとキャンドルのタスク。これにより、フォルダーのコンテンツをmsiに追加し、その後、そのフォルダーとそのコンテンツをインストールすることができました。

私の問題は、msiに追加しているフォルダーに、名前が既にローカライズされているファイルが含まれているところから始まります(これは要件です)。

たとえばロシア語で名前が付いているファイルをディレクトリ構造に追加しているときに、1252コードページではない場合、次のエラーが発生します。

[exec] ...... Templates.wxs(65):エラーLGHT0311:指定されたデータベースコードページ「1252」で使用できない文字が文字列に指定されました。これらの文字をデータベースのコードページに存在する文字に変更するか、次の属性のいずれかを変更してデータベースのコードページを更新します:Product / @ Codepage、Module / @ Codepage、Patch / @ Codepage、PatchCreation / @ Codepage、またはWixLocalization /@Codepage。

(UTF-8)に設定しようとしましProduct/@Codepage65001が、問題は解決しませんでした。

最終的に私がやりたいのは、フォルダーとそのコンテンツをインストーラーに追加し、他の誰かがそのフォルダーに名前がローカライズされた任意の数のファイルを追加できるようにすることです。このように、ビルドが実行され、その後msiが作成されるたびに、msiにはそのフォルダーとそのコンテンツが含まれます。

事前にどうもありがとうございました。

4

1 に答える 1

4

MSI データベースのコード ページの設定について、WiX.chm は次のように述べています。

これは、1252 のような整数または Windows-1252 のような Web 名によって、有効な Windows コード ページに設定できます。UTF-7 と UTF-8 は、ユーザー インターフェイスの問題のため、公式にはサポートされていません。ユニコードはサポートされていません。

さまざまな言語で名前が付けられたファイルがある限り、つまり、ファイル テーブルが 1 つの Windows コード ページに収まらない場合、選択の余地はほとんどありません。UTF-8 は公式にはサポートされていないと言われており、これには希望の余地があります。

要素のCodePage属性を に設定すると、正常にビルドされます。そして、結果の MSI を問題なくインストール/アンインストールできます。私は少し遊んでみましたが、上記の警告に記載されている「インターフェースの問題」には直面しませんでした。ProductUTF-8

さらに、トピックを少しググったところ、InstallShield で MSI データベース コード ページを UTF-8 に設定できることがわかりました。これはドキュメントに反映されています (そのページで「utf-8」を検索してください)。彼らは、潜在的なインターフェースの問題についてもっと言いたいことがあります。

ただし、一部のシナリオでは、ユーザー インターフェイスの問題が発生します。たとえば、エンド ユーザーが /qb コマンド ライン オプションを指定するか、または [プログラムの追加と削除] から製品をアンインストールすると、Windows インストーラーは非常に小さなフォントを使用してユーザー インターフェイス テキストを UTF-8 データベースで表示します。

また、安全側に留まりたいため、この設定はfalseデフォルトです (UTF-8 ではなく、ASCII のみ)。

では、最後に、あなたの状況で私は何をしますか?

  • それがインストール パッケージの厳密な要件である場合はUTF-8、コード ページとして使用します。
  • ローカリゼーションに関連するすべての可能な組み合わせ (英語の OS、英語以外の OS、現在のカルチャとカルチャ UI のさまざまな組み合わせ) で、考えられるすべてのシナリオ (インストール / アンインストール / 修復 / アップグレード / など) をテストします。
  • これらのゴースト「インターフェースの問題」に直面した場合は、それらを利害関係者に示し、これが許容できるかどうかを判断し、許容できる場合は既知の問題を公開します
  • それ以外の場合は、このアイデアをリサイクルして、この分野でスキルをレベルアップする機会を与えてくれた人生に感謝してください :)

お役に立てれば。

于 2012-10-03T21:02:40.747 に答える