Projet

Général

Profil

Créer un paquet exe

  • Compiler sous Windows
    Il y a des problèmes spécifiques à la compilation sous Windows. Regarder en particulier la doc de AbulEduFileV1
  • Utilisation de inno-setup
  • Utilisation de http://www.dependencywalker.com/ pour trouver les DLL nécessaires à l'exécution du logiciel
    Lancez le logiciel et faites-le pointer vers l'exécutable créé lors de la compilation sous QTcreator.
  • Décision d'inclure les DLL dans chaque paquet logiciel (plus souple / portable). A vérifier que le script iss plus bas les prend bien tous en compte.
  • Si on réutilise le fichier ISS ci-dessous il faut utiliser le menu tools/generate GUID
  • Fichier ISS à utiliser de base pour les logiciels QT
    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
    
    [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.)
    ; Exemple AppId={{62974C2F-0013-4262-AF5E-7F46C992672E}
    AppId={menu tools/generate GUID
    AppName=Le Terrier d'AbulEdu - Calcul Mental
    AppVersion=0.99
    AppPublisher=RyXéo SARL
    AppPublisherURL=http://www.abuledu.org/leterrier/
    AppSupportURL=http://www.abuledu.org/leterrier/
    AppUpdatesURL=http://www.abuledu.org/leterrier/
    DefaultDirName={pf}\AbulEdu\Calcul Mental
    DefaultGroupName=Le Terrier d'AbulEdu
    LicenseFile=../gpl-2.0.txt
    OutputDir=.
    OutputBaseFilename=leterrier-calculment-0.99-setup
    Compression=lzma
    SolidCompression=yes
    
    [Languages]
    Name: "french"; MessagesFile: "compiler:Languages\French.isl" 
    
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    
    [Files]
    Source: "C:\code\leterrier-calculment\trunk\release\leterrier-calculmental.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\code\leterrier-calculment\trunk\images\*"; DestDir: "{app}\images"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\QtScript4.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\QtNetwork4.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\QtGUI4.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\QtCore4.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\mingwm10.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\Qt\2010.03\qt\bin\libgcc_s_dw2-1.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    
    [Icons]
    Name: "{group}\Calcul Mental"; Filename: "{app}\leterrier-calculmental.exe" 
    Name: "{commondesktop}\Calcul Mental"; Filename: "{app}\leterrier-calculmental.exe"; Tasks: desktopicon
    
    [Run]
    Filename: "{app}\leterrier-calculmental.exe"; Description: "{cm:LaunchProgram,Calcul mental}"; Flags: nowait postinstall skipifsilent
    

Les valeurs à vérifier

Attention aux espaces inutiles à supprimer et attention il y a {{ en début et une seule }

AppId={{ Generate GUID }
AppName=Le Terrier d'AbulEdu - Nom_logiciel
AppVersion= version_logiciel
DefaultDirName={pf}\AbulEdu\ Nom_logiciel
DefaultGroupName=Le Terrier d'AbulEdu
OutputBaseFilename=leterrier- nom_logiciel_redmine - version_logiciel -setup

[Icons]
Name: "{group}\ Nom_logiciel "; Filename: "{app}\ Nom_logiciel_exe "
Name: "{commondesktop}\ Nom_logiciel "; Filename: "{app}\ Nom_logiciel_exe "; Tasks: desktopicon

[Run]
Filename: "{app}\ Nom_logiciel_exe "; Description: "{cm:LaunchProgram, Nom_logiciel }"; Flags: nowait postinstall skipifsilent

Quelques remarques d'Eric

Pourquoi inclure les DLL dans chaque logiciel ?
  • Les inconvénients :
    - ça alourdit chaque paquet
    - ça rend le téléchargement plus long (surtout pour ceux qui ont un débit limité)
  • Les avantages :
    - ça simplifie énormément la vie de l'utilisateur qui n'a pas à télécharger deux .exe pour faire marcher un logiciel
    - chaque logiciel embarque avec lui la bonne version de la DLL, par exemple calculette actuellement sera avec QT 4.7 ce qui fait qu'un utilisateur dans 5 ans qui téléchargera la calculette aura la bonne version de la DLL "avec l'exe" ... regardez le pb de kidistib actuellement avec tcl 8.3 ou 8.4 ... ou 8.5 ?
    - ça libère les développeurs de devoir se limiter aux fonctionnalités de la version de qt fournie dans l'éventuel setup-qt.exe commun
    - ça simplifie la vie du packageur qui ne réfléchit pas aux conséquences sur les autres programmes de ce qu'il est en train de packager

Les paramètres à avoir en tête:
- la taille des disques durs est telle qu'il n'est plus du tout primordial de jouer la carte de l'optimisation en espace disque.

Donc, j'insiste pour qu'on insère les DLL dans les paquets d'installation windows. Oui ça n'est pas "propre", "optimal" ou tout ce que vous voulez mais n'oubliez pas notre approche pragmatique, "ce qui marche ... marche".
Cela dit, rien n'empêchera ou n'interdira un packageur tiers de faire autrement, c'est aussi ça la liberté du logiciel. Par exemple pour une utilisation d'un pack dans un package global comme un liveCD/DVD ou la framakey.

Signer les paquets

Après avoir payé le droit de douane auprès d'un vendeur de certificat "codesign" il faut passer à innosetup récent, configurer un codesign (menu tool) et faire une entrée "ryxeo" par exemple avec la commande suivante:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe" sign /f "C:\code\certificat.p12" /p lemotdepasse $p

signtool.exe est proposé par le SDK windows de microsoft (gratuit).

Pensez ensuite à ajouter la section suivante dans le fichier .iss

SignTool=ryxeo /d $qPackage d'installation$q $f
SignedUninstaller=True
SignedUninstallerDir=.

AbulEdu-Leterrier-Logo.png (103 ko) Francois, 29/01/2011 19:53

AbulEdu-Leterrier-Logo-bleu.png - logo avec fond bleu (99,5 ko) Francois, 29/01/2011 19:54

Redmine Appliance - Powered by TurnKey Linux