Tcl-tk¶
Vu qu'il semble interdit (ref: http://www.activestate.com/activetcl/license-agreement) de prendre un morceau d'active-tcl pour le diffuser à nos utilisateurs je me suis lancé dans la compilation de TCL/TK sous windows à partir du code source du projet.
Licence de activestate¶
On croit rêver et on se demande si c'est possible de restreindre ainsi les droits d'un logiciel qui est sous licence GNU/GPL:
4. Restrictions.
1. a. Except as expressly provided herein You may not: (i) permit others outside Your organization to use the Software; (ii) modify or translate the Software; (iii) reverse engineer, decompile, or disassemble the Software, except to the extent this restriction is expressly prohibited by applicable law; (iv) create derivative works based on the Software; (v) merge the Software with another product; (vi) copy the Software; (vii) remove or obscure any proprietary rights notices or labels on the Software; (vii) (a) redistribute the Software as a whole whether as a wrapped application or on a stand alone basis, (b) use its parts to create a language distribution, or (c) redistribute the ACTIVESTATE components with Your Wrapped Application.
Compilation à partir des sources¶
- décompression de l'archive ci-jointe: http://redmine.ryxeo.com/attachments/download/787/20110301-MinGW-compilation-tcl-tk-snack-img-from_sources-ryxeo.7z
- lancer le minGW Shell : C:\MinGW\msys\1.0\msys.bat (si vous créez un lanceur pensez à utiliser le répertoire C:\MinGW\msys\1.0\bin comme répertoire de démarrage)
- cd /src
pour chaque répertoire de ce dossier, par exemple pour tcl
- cd tcl*/tcl*
- win/configure --prefix=/opt/tcl --with-tcl=/opt/tcl/lib --with-tk=/opt/tcl/lib --includedir=/src/include
- make
- make install
Le résultat se trouve dans /opt/tcl. Par rapport à la racine windows, ça se trouve ici: C:\MinGW\msys\1.0\opt\tcl
Création du paquet de déploiement pour les utilisateurs¶
Pour créer l'équivalent du setup-tcl.exe que nous utilisons depuis des années, il faut créer un fichier iss comme suit:
; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "TCL/TK pour AbulEdu" #define MyAppVersion "8.5.9" #define MyAppPublisher "RyXeo SARL" #define MyAppURL "http://www.abuledu.org/" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{F5429D87-D7E1-47C4-B69D-507BD91EA92F} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\TCL DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" Name: "french"; MessagesFile: "compiler:Languages\French.isl" [Files] Source: opt\tcl\bin\*.*; DestDir: {app}\bin\ Source: opt\tcl\bin\wish85.exe; DestDir: {app}\bin\; DestName: wish.exe Source: opt\tcl\lib\*.*; DestDir: {app}\lib\; Flags: recursesubdirs [Registry] Root: HKCR; SubKey: .tcl; ValueType: string; ValueData: TclScript; Flags: uninsdeletekey Root: HKCR; SubKey: TclScript; ValueType: string; ValueData: TclScript; Flags: uninsdeletekey Root: HKCR; SubKey: TclScript\Shell\Open\Command; ValueType: string; ValueData: """{app}\bin\wish.exe"" ""%1"""; Flags: uninsdeletevalue
Remarques:¶
Il manque libkidis.dll¶
Il faut compiler la DLL de kidistb à partir de cette nouvelle version de TCL/TK
Modification du code¶
Modification pour passage à snack 2.2 cf tcl.tk (eric) à tester et valider, notes prises rapidement:
package require -exact snack 2.2
au lieu de
#switch [info tclversion] {-
#8.4 {load [file join Snack1.dll]}
#8.3 {load [file join Snack.dll]} #
#}
+ modification du code pour avoir
set currentson [file join $Home sons $son$ext]
snack::sound s -file $currentson
s play -block 1
-> semble pb de play (son haché)