IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[gtk3][windows]Distribuer son programme sous windows.


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut [gtk3][windows]Distribuer son programme sous windows.
    Bonsoir

    J'aimerai savoir quoi donner avec mon exécutable pour qu'il marche sur un autre PC.
    En compilation dynamique, il faut les dll, en statique, on peut s'en passer.
    Il faut rajouter dans tous les cas un répertoire share avec
    - "locale" si on utilise des objets prédéfinis et qu'on souhaite avoir la VF
    - "icons/Adwaita" qui est énorme... (presque toute la taille de ce qu'on doit fournir) pour les images sur certains boutons (comme les + et - sur les spinboutons)
    - "glib-2.0" : je me demande pourquoi je le donne...

    Ceci est énorme ! Comment réduire cette taille ? Surtout celle de icons...
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    je vois 4 possibilités plus ou moins simples:
    1) Faire 2 installeurs pour ton programme, à l'installation tu vérifies les dépendances, et proposes d'installer l’environnement GTK+ si il est absent.
    Du coup tu peut distribuer 2 versions de ton programme dans 2 installeurs différents, l'un avec GTK+ (a) et l'autre sans (b).
    Les utilisateurs potentiels installerons une fois le (a) plus volumineux car contenant GTK+ si besoin et puis le (b) (bien plus léger) après pour des mises à jour.
    C'est ce que j'ai choisi de faire dans ce cas (GTK+2)
    Attention à ne pas créer de conflit de bibliothèques sur ton PC, et puis distribuer l'environnement complet évite l'erreur bête du fameux truc qu'on
    oublie toujours d'inclure dans le paquetage.
    2) J'utilise un outil applelé "gtk-mac-bundler" pour faire ça sous OSX (pour le même exemple),
    cela fonctionne parfaitement, il est peut être possible d'en créer une version win32, ou au moins de voire comment il fonctionne, et ce qu'il choisit de récupérer.
    3) Faire le tri dans les icônes et ne laisser que celles que ton programme utilise ...
    4) Ne pas utiliser d'icônes de la bibliothèque et créer les tiennes ...

    S.

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    merci pour la réponse

    J'ai des remarques à faire pour tes propositions :
    - Pour les spin bouton, tu peux imposer l'image du * et du - ?
    - Mon programme est sous gtk3. Je ne pense pas qu'il y ait un installateur de gtk3 pour windows.
    - Comment gères-tu les tailles d’icônes si tu fais le ménage ? Sont-elles toutes utilisées ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par troumad Voir le message
    - Pour les spin bouton, tu peux imposer l'image du * et du - ?
    Alors là joker je ne vois pas de quoi tu parle ... de l'animation du spin button ? je ne sais pas comment cela est géré

    Citation Envoyé par troumad Voir le message
    - Mon programme est sous gtk3. Je ne pense pas qu'il y ait un installateur de gtk3 pour windows.
    Tu peut en faire un toi même, il faut juste faire un installeur qui va:
    1) dépacketer le bundle dans un dossier de ton choix (ex: C:\>Programmes Files\GTK+-3.0)
    2) Modifier le PATH inclure le "bin" de gtk-3

    Voic un fichier type pour InnoSetup (les parties importantes tout du moins), le bundle GTK est un autoextractible "GTK.exe",
    qui va être extrait pour créer le dossier "C:\>GTK"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
     
    [Files]
    Source: "GTK.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
     
    [ Code]
    var
      Drive: String;
      GtkPath: String;
      LibPath: String;
      LibName: String;
      ToBeRun: String;
      ResultCode: Integer;
     
    function GetGtkInstalled (): Boolean;
    begin
      Drive := ExpandConstant('{drive:{tmp}}');
      GtkPath := Drive + '\' + 'GTK';
      Result := DirExists(GtkPath);
    end;
     
    function GetGtkPath (S: String): String;
    begin
      Result := GtkPath;
    end;
     
    function InitializeSetup(): Boolean;
    begin
      Result = TRUE;
      if Result then begin
        if not GetGtkInstalled () then begin
          if MsgBox('The GTK+ runtime environment has not been found and is required to run My-Prog: do you want to install the GTK+ runtime environment ?' #13#13 'Version <VERSION INFO HERE> is included in this package, but the latest GTK+ can be download from: <http://www.gtk.org/>', mbConfirmation, MB_YESNO) = idYes then begin
            ExtractTemporaryFile('GTK.exe');
            ToBeRun := ExpandConstant('{tmp}\GTK.exe');
            Exec(ToBeRun, '-y', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
            ToBeRun := ExpandConstant('/E /H /Y /I {tmp}\GTK') + ' ' + Drive + '\GTK';
            Exec('xcopy', ExpandConstant(ToBeRun), '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
          end;
        end;
        Result := GetGtkInstalled ();
        if not Result then begin
          if (MsgBox('The GTK+ runtime environment is not installed/detected do you want to install My-Porg anyway ?', mbConfirmation, MB_YESNO) = idYes) then begin
            Result := TRUE;
          end;
        end;
      end;
    end;
     
    [Registry]
    Root: HKLM; SubKey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; ValueType: string; ValueName: "Path"; ValueData: "{reg:HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\,Path};{app}"
    Root: HKLM; SubKey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; ValueType: string; ValueName: "Path"; ValueData: "{reg:HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\,Path};C:\GTK\bin"
     
    [ Code]
    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
    var
      Path, AppDir: string;
      Index: Integer;
    begin
      if CurUninstallStep = usUninstall then
      begin
        if RegQueryStringValue(HKEY_LOCAL_MACHINE,
          'SYSTEM\CurrentControlSet\Control\Session Manager\Environment\',
          'Path', Path) then
        begin
          AppDir := ExpandConstant('{app}');
          Index := Pos(AppDir, Path);
          Delete(Path, Index-1, Length(AppDir)+1);
          RegWriteStringValue(HKEY_LOCAL_MACHINE,
            'SYSTEM\CurrentControlSet\Control\Session Manager\Environment\',
            'Path', Path);
        end;
      end;
    end;
     
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
     
    [Files]
    Source: "my-prog.exe"; DestDir: "{app}"; Components: main; Flags: ignoreversion
    Source: "pixmaps\*"; DestDir: "{app}\pixmaps\"; Components: main; Flags: ignoreversion
    Source: "my-prog.ico"; DestDir: "{app}"; Components: main; Flags: ignoreversion
    Source: "setup.ico"; DestDir: "{app}"; Components: main; Flags: ignoreversion
    Source: "COPYING"; DestDir: "{app}"; Components: main; Flags: ignoreversion
    Source: "ChangeLog"; DestDir: "{app}"; Components: main; Flags: ignoreversion
     
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
     
    [Icons]
    Name: "{group}\My-Porg"; Filename: "{app}\my-prog.exe"; WorkingDir: "{app}"; IconFilename: "{app}\my-prog.ico"; Components: main
    Name: "{group}\{cm:ProgramOnTheWeb,My-Prog description}"; Filename: "my-site-web"; Components: main;
    Name: "{group}\{cm:UninstallProgram,My-Prog}"; Filename: "{uninstallexe}"; IconFilename: "{app}\isaacs.ico"; Components: main;
    Name: "{commondesktop}\My-Prog"; Filename: "{app}\my-prog.exe"; Tasks: desktopicon; WorkingDir: "{app}"; IconFilename: "{app}\my-prog.ico"; Components: main
    Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\My-Progr"; Filename: "{app}\my-prog.exe"; WorkingDir: "{app}"; Tasks: quicklaunchicon; IconFilename: "{app}\my-prog.ico"; Components: main
     
    [Components]
    Name: "main"; Description: "My-Prog"; Types: full compact custom
     
    [Run]
    Filename: "{app}\my-prog.exe"; Description: "{cm:LaunchProgram,My-Prog}"; Flags: nowait postinstall skipifsilent
    Citation Envoyé par troumad Voir le message
    - Comment gères-tu les tailles d’icônes si tu fais le ménage ? Sont-elles toutes utilisées ?
    Hmmm, je dirais que tant que tu utilises une icône tu la conserve quelque soit la taille, ceci dit si tu sais quelle taille d'îcône tu
    utilise dans ton programme (GTK_SIZE_*...) alors tu peut faire un tri plus fin et virer les autres ... j'imagine.

    S.

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    À tester...
    Je ne savais pas qu'on pouvait faire tout ça avec innosetup. il va falloir que je comprenne tout ce système !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. [Free Pascal] Convertir son programme sous Linux en exécutable Windows
    Par le_clem28 dans le forum Free Pascal
    Réponses: 12
    Dernier message: 05/09/2010, 10h12
  2. Réponses: 1
    Dernier message: 23/12/2007, 17h46
  3. Démarage Automatique du Programme sous Windows ?
    Par jockyboss777 dans le forum VB.NET
    Réponses: 38
    Dernier message: 16/07/2007, 23h33
  4. Compiler et executer un petit programme sous windows
    Par nistelsof dans le forum Langage
    Réponses: 6
    Dernier message: 30/05/2007, 17h31
  5. Réponses: 5
    Dernier message: 01/02/2006, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo