[SOLVED] erreur codage de caractère

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets (Windows 7 / 10)
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
olaplanche
Messages : 140
Inscription : 26 janv. 2017 - 11:11

04 déc. 2017 - 10:14

Bonjour,

J’essaie de créer un fichier temporaire pour un nouveau paquet avec la fonction import tempfile.
Je défini le contenu de mon fichier temporaire de la manière suivante :

Code : Tout sélectionner

data = ur"""moncontenu"""
Lors de l'installation du paquet, j'obtiens l'erreur suivante : ascii' codec can't encode character
J'en déduis que certains caractères de mon fichier temp ne lui plaisent pas...

Existe t-il une solution ?

Merci
Dernière modification par olaplanche le 11 déc. 2017 - 14:52, modifié 1 fois.
- Version de WAPT installée : 2.2.1.11935 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1367
Inscription : 10 juil. 2014 - 23:52
Contact :

04 déc. 2017 - 11:09

Bonjour

Sauf si il est sensible, est t'il possible d'avoir le code complet ?

Simon
olaplanche
Messages : 140
Inscription : 26 janv. 2017 - 11:11

04 déc. 2017 - 11:13

Bonjour,

Voilà le code moins la partie concernant la licence du logiciel :

Code : Tout sélectionner

    import tempfile
    pathparamsfile = makepath(tempfile.gettempdir(),'Eureka.ini')
    data = ur"""[OEM]

[Langue]
Ressources=FR
Impression=FR




[Menus]
primo=1
Fichier=00010100011101
Edition=11111111000
Stade=01
Vues=1
Données=10100001
Insertion=111111111111111110001
Analyses=11110000
Affichage=1
Format=1
BOApplication=000000
BOApplicationSphinx=1101
BOInsertion=111101111101111
Interview=1
CS=CS
V51=1

[debug]
licenceur=\\data-svr1\outils$\Logiciels\SphinxV5\programmes\Licence\Licence.exe
ligne= -m=config -s=C:\Program Files (x86)\SphinxV5\sphinx.ini -e=C:\Program Files (x86)\SphinxV5\eureka.ini
[Fichiers]
Fichiers=Fichiers
Répertoires=dictionnaires ; Multimédia/Drapeaux ; Multimédia/Navigation ; Multimédia/Formes ; Multimédia/Fonds ; Multimédia/Images ; Multimédia/Pictos_ecran ; Multimédia/Pictos_papier ; Modelesinternet
Documents=Enquêtes
Multimédia=Multimédia
Mots-outils=dictionnaires\Mots-outils.dic
Styles=Styles.hys
SphinxOnline=http://www.sphinxonline.net
CompteTest=public
MotDePasseTest=Z7L
Comptes=
Abonnement=http://www.sphinxonline.com/abonnementFR.htm
Conseils=1;1;1
QualitéJPEG=100
EditionBasic=1
PropriétésObjets=0
Partage=0
Applet=EurekaApplet.jar
Conditions=http://www.sphinxonline.com/conditionsFR.htm
Fichier1=Enquêtes\Automobiles\Automobiles.hyp
Fichier2=Enquêtes\tourisme\tourisme.hyp
Fichier3=Enquêtes\hopital\hopital.hyp
Fichier4=Enquêtes\loto\loto.hyp
Couleurs=FF8080,602080,C0FFFF,E0E0A0,800060,8080FF,C08000,FFC0C0,800000,FF00FF,00FFFF,FFFF00,800080,000080,808000,FF0000,FFCC00,FFFFCC,CCFFCC,99FFFF,FFCC99,CC99FF,FF99CC,99CCFF,FF6633,CCCC33,00CC99,00CCFF,0099FF,0066FF,996666,969696,663300,669933,003300,003333,003399,663399,993333,333333,000000,FFFFFF,0000FF,00FF00,FF0000,00FFFF,FF00FF,FFFF00,000080,008000,800000,008080,800080,808000,C0C0C0,808080
[Configuration]
NombreDécimalesValeurs=2
NombreDécimalesPourcentages=1
SéparateurDécimales=,
SéparateurMilliers=1
NumérotationTitres=0
NumérotationVariables=1
LongeurVariables=255
LongeurWordBreak=255
LongeurMaximum=1000
PleinEcran=0
SéparateursMots=^t ^p ; " ' - = + , / ( ) { } [ ] < > . ? ¿ ! : ~ & # % ^^ § @ ~ – ` ’ » « …
SéparateursRéponses=^t^p;
ProcesseurCE=ARM
TypeVue=1
TypeFormulaire=3
NumérosModalités=0
PoliceTableur=Arial
TaillePoliceTableur=8
DoubleClicExplorateurVariables=-1
[Seuils]
FF=5
FF1=1
FF2=5
FF3=15
FF01=0.01
FF02=0.1
FF03=0.5
FF04=1
FF05=5
FF06=15
FF07=20
FN=5
FN1=1
FN2=5
FN3=15
FN01=0.01
FN02=0.1
FN03=0.5
FN04=1
FN05=5
FN06=15
FN07=20
NN=0.6
NN1=0.8
NN2=0.6
NN3=0.4
NN01=0.9
NN02=0.8
NN03=0.7
NN04=0.6
NN05=0.5
NN06=0.4
NN07=0.3
[Calculs]
Strict=0
CalculsStrictsEffectifMin=30
CalculsStrictsPourcentageInf5=20
PrincipauxElémentSignificatifs=0
PrincipauxElémentsEffectif=10
PrincipauxElémentsEcart=0
PrincipauxElémentsMax=3
[BarresOutils]
Application=1
Questionnaire=1
Insertion=1
Format=1
Relations=1
Image=0
Etat=1
Explorateur=1
TexteEtat=Base de données
TailleExplorateur=250
[Publication]
Utilisateur=
MotDePasse=
Destination=0
SOL=1;;
Répertoire=
FormScript=
CibleScript=0
Simplifiée=1
AccèsCompte=1
[Proxy]
Proxy=0
Hôte=
Port=21
Utilisateur=
MotDePasse=
[Serveur]
Hôte=DESKTOP-U1529DK
IP=
Port=80
Scripts=Etudes
Pages=Pages
Droits=
SMTP=
Navigation=0
DélaiCache=30
DélaiSauve=3
MaxPages=10
Debug=0
URLComptesASPX=
Sécurisé=0
[Mail]
From=
SMTP=
[Scanner]
Résolution=200
RectoVerso=0
AutoConfiguration=1
ImagesNumérisées=0
IgnorerMalRemplies=0
ArrêtSurErreur=1
SeuilBas=20
SeuilHaut=95
AutoRotation=1
AutoRotationActive=0
AutoCorrection=0
Modèle=0
OCR=1
SauverImages=0
RépertoireImages=
SauverPaquet=0
RépertoirePaquet=
Journal=1
Affichage=1
DernierID=128
[Caere]
SN=IOEULSJJFT
Répertoire=Eureka\Caere
SéparateursNumérique=,.
Trace=0
[Couleurs]
Couleur0=FFFFFF
Couleur1=FFFFFF
Couleur2=FFFFFF
Couleur3=FFFFFF
Couleur4=FFFFFF
Couleur5=FFFFFF
Couleur6=FFFFFF
Couleur7=FFFFFF
Couleur8=FFFFFF
Couleur9=FFFFFF
Couleur10=FFFFFF
Couleur11=FFFFFF
Couleur12=FFFFFF
Couleur13=FFFFFF
Couleur14=FFFFFF
Couleur15=FFFFFF
[MiseAuPoint]
Total100p100=0
MaxVariablesGroupe=255
DécompositionOption1=0
DécompositionOption2=0
PropriétésVersStyle=0
SigneFF=0
ImpressionRelationTestée=1
FormatXML=0
StylesXML=1
Office=1111110
IgnorerRéférences=0
TailleTable=10000
Log1Heure=0
DebugHTTP=0
SéparateurHTTP=<table><tr><td height="1"></td></tr></table>
TimeOutPublication=18000
TableauCaractéristiques=1
XGraph=0
Lissage=0
MultiLangue=1
Thème1=2
Thème2=11
"""
    fichier = open(pathparamsfile, "w")
    fichier.write(data)
    fichier.close()
    filecopyto(pathparamsfile,'c:/SphinxV5')
    remove_file(pathparamsfile)
- Version de WAPT installée : 2.2.1.11935 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Avatar de l’utilisateur
htouvet
Expert WAPT
Messages : 388
Inscription : 16 mars 2015 - 10:48
Contact :

05 déc. 2017 - 16:52

Bonjour,
Comme le fichier contiendra des caractères non ascii, il faut décider d'un "encoding".

Il y a de grandes chances que l'UTF8 fonctionne...

Donc utiliser le module "codecs"

Code : Tout sélectionner

import tempfile
import codecs

def install():
    pathparamsfile = makepath(tempfile.gettempdir(),'Eureka.ini')
    data = ur"""[OEM]
[Langue]
Ressources=FR
Impression=FR

[Menus]
primo=1
Fichier=00010100011101
Edition=11111111000
Stade=01
...
SéparateurHTTP=<table><tr><td height="1"></td></tr></table>
TimeOutPublication=18000
TableauCaractéristiques=1
XGraph=0
Lissage=0
MultiLangue=1
Thème1=2
Thème2=11
"""
    fichier = codecs.open(pathparamsfile, "wb", encoding='utf8')
    fichier.write(data)
    fichier.close()
    filecopyto(pathparamsfile,'c:/SphinxV5')
    remove_file(pathparamsfile)

Tranquil IT
olaplanche
Messages : 140
Inscription : 26 janv. 2017 - 11:11

06 déc. 2017 - 15:30

Merci cela semble résoudre le problème.
Par contre la copie du fichier m'écrase le dossier de destination par le fichier source sans l'extension !!! Je ne comprend pas, pourtant j'ai déjà utilisé cette commande sans problème...

Code : Tout sélectionner

filecopyto(pathparamsfile,'c:/SphinxV5')
- Version de WAPT installée : 2.2.1.11935 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Avatar de l’utilisateur
htouvet
Expert WAPT
Messages : 388
Inscription : 16 mars 2015 - 10:48
Contact :

06 déc. 2017 - 15:45

Il y effectivement une indétermination, est-ce que la destination est un répertpoire ou le fichier.
Pour être sûr... :

Code : Tout sélectionner

filecopyto(pathparamsfile,'c:/SphinxV5/Eureka.ini')
Tranquil IT
olaplanche
Messages : 140
Inscription : 26 janv. 2017 - 11:11

06 déc. 2017 - 16:25

J'obtiens maintenant l'erreur suivante : IOError: [Errno 2] No such file or directory: 'c:/SphinxV5/Eureka.ini'

Je me demande si le script ne copie pas le fichier avant que l'installeur ne le crée ?!
- Version de WAPT installée : 2.2.1.11935 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Avatar de l’utilisateur
htouvet
Expert WAPT
Messages : 388
Inscription : 16 mars 2015 - 10:48
Contact :

06 déc. 2017 - 16:41

C'est possible...
Certains installeurs rendent la main juste après leur lancement mais continue en tâche de fond (exemple: Adobe CS 6)

Dans ce cas, il faut monitorer la fin de l'installation en analysant les process en cours dans une boucle d'attente.
Dans le cas du fichier ini, vous pouvez essayer d'attendre la création de ce fichier.

Exemple...

Code : Tout sélectionner

from setuphelpers import *
import time

def install():
    # lancement de l'installeur..
    run('install_sphinx.exe /silent')

    # attente du fichier pendant au plus 2 minutes
    start_time = time.time()
    while not isfile('c:/SphinxV5/Eureka.ini') and time.time() - start_time < 2*60:
        time.sleep(2)

    if not isfile('c:/SphinxV5/Eureka.ini'):
        error('Fichier configuration non present')

    # fichier de configuration
    pathparamsfile = makepath(tempfile.gettempdir(),'Eureka.ini')
    data = ur"""[OEM]
[Langue]
Ressources=FR
Impression=FR

[Menus]
primo=1
Fichier=00010100011101
Edition=11111111000
Stade=01
...
SéparateurHTTP=<table><tr><td height="1"></td></tr></table>
TimeOutPublication=18000
TableauCaractéristiques=1
XGraph=0
Lissage=0
MultiLangue=1
Thème1=2
Thème2=11
"""
    fichier = codecs.open(pathparamsfile, "wb", encoding='utf8')
    fichier.write(data)
    fichier.close()
    filecopyto(pathparamsfile,'c:/SphinxV5')
    remove_file(pathparamsfile)
Tranquil IT
olaplanche
Messages : 140
Inscription : 26 janv. 2017 - 11:11

11 déc. 2017 - 14:52

Ok votre solution fonctionne !

Merci
- Version de WAPT installée : 2.2.1.11935 Enterprise
- OS du serveur : Linux / Debian Buster
- OS de la machine d'administration/création des paquets : Windows 10
Répondre