7

私は VS2012 に Wix インストーラー プロジェクトを持っています。これは前回使用したとき (約 1 週間前) にうまくコンパイルされました。今日戻ってみると、約 15 個のコード ページ エラーが発生しました。

Error   6   A string was provided with characters that are not available in the specified database code page '1252'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.

これらの最初は、次の行で発生します。

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"
         Manufacturer="(株)テイコク" />

そして、日本語のキャラクターのせいでwixが不幸だと思います。ただし、製品宣言では、コードページを 932 に設定しています。これは、日本語では正しいはずです。

<Product Id="*" Codepage="932" Language="1041"
         Name="各務原市農地支援・畑地管理システムインストーラー" Version="1.1.0.0"
         Manufacturer="(株)テイコク" UpgradeCode="PUT-GUID-HERE">

特に数日前は問題なく機能していたため、エラーの内容や解決方法が本当にわかりません...

必要な場合の完全な Wix コードは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:net="http://schemas.microsoft.com/wix/NetFxExtension">
  <Product Id="*" Codepage="932" Language="1041" Name="各務原市農地支援・畑地管理システムインストーラー" Version="1.1.0.0" Manufacturer="(株)テイコク" UpgradeCode="PUT-GUID-HERE">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Manufacturer="(株)テイコク" />

    <UIRef Id="WixUI_Minimal" />
    <UIRef Id="WixUI_ErrorProgressText" />

    <PropertyRef Id="NETFRAMEWORK40CLIENT" />
    <Condition Message="インストールするには.NETフレームワーク4.0が必要です。フレームワークをインストールしてからもう一度インストーラーを実行してください。">
      <![CDATA[Installed OR NETFRAMEWORK40CLIENT]]>
    </Condition>

    <MajorUpgrade DowngradeErrorMessage="もっと新しいバージョンが既にインストールされています。" />
    <MediaTemplate EmbedCab="yes" />

    <Feature Id="ProductFeature" Title="MapManagerInstaller" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>

    <Icon Id="MapManager.exe" SourceFile="MapManager.exe" />
  </Product>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="各務原市農地支援・畑地管理システム" />
      </Directory>
      <Directory Id="DesktopFolder" Name="Desktop">
      </Directory>
      <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id ="ProgramMenuDir" Name="各務原市農地支援・畑地管理システム">
        </Directory>
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="MapManagerProgramFiles" Guid="*">
        <File Id="MapManagerExe" Name ="MapManager.exe">
          <Shortcut Id="MapManagerDesktopShortcut" Directory="DesktopFolder" Name="各務原市農地支援・畑地管理システム" WorkingDirectory="INSTALLFOLDER" Icon="MapManager.exe" IconIndex="0" Advertise="yes" />
          <Shortcut Id="MapManagerStartMenuShortcut" Directory="ProgramMenuDir" Name="各務原市農地支援・畑地管理システム" WorkingDirectory="INSTALLFOLDER" Icon="MapManager.exe" IconIndex="0" Advertise="yes" />
        </File>
        <File Id="AxInterop.SisLib" Name="AxInterop.SisLib.dll" />
        <File Id="Interop.SisLib" Name="Interop.SisLib.dll" />
        <File Id="ClassMap" Name="ClassMap.dll" />
        <File Id="SuidenManager" Name="SuidenManager.dll" />
        <File Id="HatachiManager" Name="HatachiManager.dll" />
        <File Id="MapManagerShared" Name="MapManagerShared.dll" />
        <RemoveFolder Id="INSTALLDIR" On="uninstall" />
      </Component>
      <Component Id="DesktopShortcut" Guid="*">
        <Shortcut Id="DesktopShortcut" Name="各務原市農地支援・畑地管理システム" Target="[INSTALLFOLDER]MapManager.exe" WorkingDirectory="INSTALLFOLDER" />
        <RemoveFolder Id="DesktopFolder" On ="uninstall" />
        <RegistryValue Root="HKCU" Key="Software\MapMax\各務原市農地支援・畑地管理システム" Type="string" Value="" KeyPath="yes" />
      </Component>
      <Component Id="ProgramMenuDir" Guid="*">
        <RemoveFolder Id="ProgramMenuDir" On ="uninstall" />
        <RegistryValue Root="HKCU" Key="Software\MapMax\各務原市農地支援・畑地管理システム" Type="string" Value="" KeyPath="yes" />
      </Component>
    </ComponentGroup>
  </Fragment>
</Wix>

アップデート:

日本語のすべての文字をコード ページ 1252 の文字に置き換えると問題なく動作します。Wix はコード ページの仕様を無視し、代わりにデフォルトの 1252 を使用しているようです...

新しい Wix セットアップ プロジェクトでもこれを試しましたが、同じ問題が発生しています。

何か案は?

4

2 に答える 2

13

私は同じ問題を抱えていましたが、「è」文字(CP-1252に含まれているため、デフォルトのカルチャが機能するはずです)でした。「e」パッチで置き換えると問題が解決しますが、それはきれいな解決策ではありませんでした。

実際に機能するのは、.wxl ファイルのコードページを追加することです

<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Codepage="utf-8" Culture="fr-ca" xmlns="http://schemas.microsoft.com/wix/2006/localization">
</WixLocalization>

1252の精密化も機能しました

<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Codepage="1252" Culture="fr-ca" xmlns="http://schemas.microsoft.com/wix/2006/localization">
</WixLocalization>

次に、Wix のドキュメント「Specifying Cultures to Build」に従って、ビルドするカルチャを指定します。.wxl ファイルに記述されているカルチャと同じである必要があります。

ここに画像の説明を入力

VS2010 でのプロジェクトのビルドが機能するようになりました。

編集: <Product Codepage="1252".wxs ファイルに追加するだけで問題も解決しました。

于 2014-01-08T18:33:58.320 に答える
4

.wxl ファイルを使用している場合、それらはビルド中にコードページをオーバーライドできます。すべての .wxl ファイルに、追加する文字に対して正しいコードページが設定されていることを確認し、.wxl ファイルからローカライズされた製品および文字列に異なるコードページの文字が混在しないようにしてください。

さらに、WixUI を使用しているため、コードページを含む多くの .wxl ファイルも含まれています。WiX.chm には、 というタイトルのトピックがあり"Specifying Cultures to Build"ます。これは、Votive でビルドするコードページを設定する方法を示しています。具体的には、.wixprojのCultures to build:設定に "ja-JP" (または他の適切なカルチャ) を追加する必要があります。Propertiesそれ以外の場合は、おそらく en-US である WixUI からデフォルトのカルチャを取得している可能性があり、1252 の回避策が説明されます。

于 2013-04-10T04:24:45.370 に答える