2013-04-10 8 views
5

Ho un progetto di installazione Wix in VS2012, che è stato compilato correttamente l'ultima volta che l'ho usato (circa una settimana fa). sono andato di nuovo oggi e ottenere circa 15 errori di pagina di codice:Stringa Wix con caratteri non disponibili nella codepage del database sebbene la codepage sia impostata

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. 

Il primo di questi si verifica nella seguente riga:

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

e presumo che Wix è infelice a causa dei caratteri giapponesi. Eppure, nella dichiarazione del prodotto io pongo la tabella di codici a 932, che dovrebbe essere corretta per il giapponese:

<Product Id="ED5351D0-BF25-4117-BB25-1F84D9AEC960" Codepage="932" Language="1041" 
     Name="各務原市農地支援・畑地管理システムインストーラー" Version="1.1.0.0" 
     Manufacturer="(株)テイコク" UpgradeCode="c21ce4f1-da24-4e4e-9e36-fece6e064487"> 

Io davvero non si ottiene ciò che l'errore è o come risolverlo, soprattutto perché questo ha funzionato bene alcuni giorni fa ...

Ecco il codice Wix completo nel caso in cui ce n'è bisogno:

<?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="ED5351D0-BF25-4117-BB25-1F84D9AEC960" Codepage="932" Language="1041" Name="各務原市農地支援・畑地管理システムインストーラー" Version="1.1.0.0" Manufacturer="(株)テイコク" UpgradeCode="c21ce4f1-da24-4e4e-9e36-fece6e064487"> 
    <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="E487204C-5CBC-48A4-9464-944752280F28"> 
     <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="EC6A71D9-C3D2-4CD8-B41F-4B677E841B01"> 
     <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="0A7DF00D-84F2-44D4-B5D5-B2F10B83FA29"> 
     <RemoveFolder Id="ProgramMenuDir" On ="uninstall" /> 
     <RegistryValue Root="HKCU" Key="Software\MapMax\各務原市農地支援・畑地管理システム" Type="string" Value="" KeyPath="yes" /> 
     </Component> 
    </ComponentGroup> 
    </Fragment> 
</Wix> 

UPDATE:

Sostituzione ogni singolo carattere giapponese con un carattere dalla code page 1252 funziona bene. Sembra che Wix stia ignorando le specifiche della code page e che utilizzi invece il predefinito 1252 ...

Ho anche provato questo in un nuovo progetto di installazione di wix e sto ottenendo lo stesso problema.

Qualche idea?

+0

Appena modificato wixlocalization @ CodePage in UTF-8 nel rispettivo file wxl. Si prega di fare riferimento [Questa domanda.] (Http://stackoverflow.com/questions/12168895/leveraging-heat-exe-and-harvest-already-localized-file-names-and-including-them) – Durgesh

risposta

4

Se si utilizzano file .wxl, questi possono sovrascrivere la codepage durante la compilazione. Assicurati che i tuoi file .wxl abbiano tutti il ​​set di caratteri corretto per i caratteri che stanno aggiungendo e che tu non finisca per mescolare caratteri di diverse codepage con il tuo prodotto e stringhe localizzate da un file .wxl.

Inoltre, dal momento che si sta utilizzando il WixUI quelli contengono molti file .wxl con codepage in essi pure. Nel WiX.chm c'è un argomento dal titolo "Specifying Cultures to Build". Questo mostra come impostare le codepage per costruire in Votive. Nello specifico, ti consigliamo di aggiungere "ja-JP" (o altra cultura appropriata) allo Cultures to build: impostando lo Properties del tuo .wixproj. Altrimenti, probabilmente stai ottenendo la cultura di default da WixUI che è probabilmente en-US e che spiegherebbe la soluzione 1252.

+0

Grazie per quello. Avevo già impostato la cultura del progetto su ja-JP, quindi immagino che non lo fosse. Penso che qualcosa sia stato danneggiato all'interno di Wix. Dopo la disinstallazione e l'eliminazione del registro di tutti i kentries relativi a wix (le reinstallazioni continuavano a mancare prima di farlo) e la reinstallazione del mio progetto di installazione sembra tornare a funzionare correttamente. –

+0

Ho avuto di nuovo lo stesso problema oggi (con il progetto che ho fissato ieri). Ha costruito una volta senza problemi. Ho cambiato il codice un po 'e ha smesso di costruire nuovamente con gli errori della code page. Quando ho controllato le proprietà del progetto, l'impostazione di costruzione "ja-JP" era scomparsa. Non l'ho rimosso manualmente. È questo comportamento noto? Quando l'ho aggiunto di nuovo, il progetto ha funzionato bene. –

+0

No. Essere interessati a sapere cosa ha causato la perdita delle impostazioni. –

8

Ho avuto lo stesso problema, ma con un carattere "è" (che è incluso in CP-1252, quindi la cultura predefinita avrebbe dovuto funzionare). Sostituendolo con la patch "e" il problema, ma questa non era una soluzione pulita.

cosa funziona davvero è l'aggiunta di un file tabella codici .wxl

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

anche precisando 1252 ha lavorato

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

quindi specificare la cultura di costruire in base alla documentazione di Wix "Specifying Cultures to Build". Deve essere la stessa cultura scritta nel file .wxl.

enter image description here

Costruire il progetto in VS2010 ora funzionano.

MODIFICA: L'aggiunta di <Product Codepage="1252" nel file .wxs ha risolto anche il problema.

+0

Nel mio progetto, ho solo aggiunto Codepage = "utf-8" al mio file di localizzazione francese (primo esempio di codice su questa risposta) e ha funzionato. Non è stato necessario specificare la cultura da compilare. Specificare che la cultura è buona quando stai sviluppando e non vuoi costruire tutte le culture che hai, a mio modo di vedere ... –

Problemi correlati