2016-10-10 1 views
0

J'ai un script, lié à QMAKE_POST_LINK dans mon fichier .pro. Donc, il utilise iscc pour créer un programme d'installation après la version finale. Certaines variables d'application telles que le nom, l'éditeur stockent dans ce fichier .pro et transmettent comme arguments à iscc comme iscc "/DName=Мое приложение". Ces variables ont le codage cp1251.qmake post shell encoding (ne convertit pas en cp866)

Donc le problème est que iscc obtient des arguments dans un mauvais codage (comme cp866, pas cp1251) et installer.exe ont des caractères erronés. Comment le réparer? Y at-il une fonction de qmake pour convertir l'encodage?

Répondre

1

Résolu.

Alors idée est d'écrire un fichier en-tête defines.iss avec qui définit en utilisant la fonction de write_fileqmake et dans le fichier principal .iss écrire #include "defines.iss" sur beginnig du fichier.

Mise à jour: Et il peut y avoir un autre problème avec les encodages. .pro fichier dans qt5 est généralement codé utf8. dernières versions de inno setup support utf8 -codé .iss, MAIS ce .iss doit commencer par BOM caractère. Donc, nous devons écrire BOM caractère au début de defines.iss. Pour cela, par exemple ouvrir le fichier dans .proNotepad++ comme cp1251 et écrire:

BOM = "п»ї" 
write_file(defines.iss, BOM) 
write_file(defines.iss, DEFINES_CONTENT, append) 

dans le codage utf8BOM sera correcte.

Désolé pour mon anglais. Ce sera génial si quelqu'un corrige mon texte :)