我在 VS2012 中有一个 Wix 安装程序项目,我上次使用它时编译得很好(大约一周前)。我今天回去发现大约 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 设置项目中尝试过这个并且遇到了同样的问题。
有任何想法吗?