FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Panoramic et ses curiosités
par Klaus Aujourd'hui à 2:20

» Synedit Parameters
par Klaus Aujourd'hui à 1:33

» Utilitaire de suppression de fichiers
par Yannick Hier à 23:03

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Jeu 22 Juin 2017 - 21:16

» Compilateur FBPano
par jean_debord Jeu 22 Juin 2017 - 9:56

» Bienvenue à Virtualalan !
par UltraVox Jeu 22 Juin 2017 - 9:18

» Concours de Morpions
par jjn4 Jeu 22 Juin 2017 - 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Utilitaire automatique de distribution de KGF.dll (ou autre)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 2:20

J'ai fait un petit outil permettant de recopier automatiquement KGF.dll (ou tout autre fichier, en fait), après un téléchargement, dans un ou plusieurs dossiers cible où KGF.dll (ou un autre fichier) doit être installé, et ce à partir d'un dossier de téléchargement.

Au premier lancement, le programme demande le dossier de téléchargement. Il vérifie la validité du chemin, puis crée un fichier INI dont la première ligne sera le dossier de téléchargement (source pour les copies), et toutes les lignes suivantes (inexistantes bien sûr au premier lancement) représentent les dossiers cible. Le programme affiche le dossier source et permet de le changer par un bouton, à droite. Il y a ensuite un objet LIST (vide au départ) contenant la liste des dossiers cible. 3 boutons permettent de gérer cette liste: ajouter un nouveau dossier cible (forcément différent du dossier source !), modifier un dossier cible et supprimer un dossier cible. Un autre bouton permet d'enregistrer une configuration modifiée, puis le bouton "Exécuter" lance la distribution, en fonction des dossiers configurés. A chaque étape, la validité des dossiers est vérifiée.

Ce programme est adaptable à tout autre fichier - il suffit de changer les variables indiquées dans les commentaires. Voici le source:
Code:
' Installer_KGF.bas
' =================
'
' Ce programme permet une installation automatisée de KGF.dll.
' Un fichier Installer_KGF.ini contient une liste de dossiers
' dans lesquels il faut copier la nouvelle version de KGF.dll.
' Au premier lancement, le fichier est créé et son contenu par défaut
' est mis en place. Ensuite, puis à chaque lancement, ce contenu
' est affiché dans un objet LIST et est modifiable. Finalement, un
' bouton "Installation" permet de recopier KGF.dll dans tous les
' dossiers configurés.
' Particularité: la première ligne contient le chemin vers le dossier
' de téléchargement de KGF.dll. KGF.dll sera copié à partir de ce dossier
' vers les autres dossiers configurés dans ce fichier.
'
' A la place de KGF.dll, tout autre fichier peut être distribué ainsi.
' Il suffit de changer le contenu des constantes fichier$ et inifile$.

labels()
constantes()
variables()
GUI()
charger_ini()

end

changer_dossier_KGF:
  changer_KGF()
  return

ajouter_dossier_cible:
  ajouter_cible()
  return

supprimer_dossier_cible:
  supprimer_cible()
  return

changer_dossier_cible:
  changer_cible()
  return
 
enregistrer_liste:
  enregistrer()
  return
 
executer:
  executer()
  return

sub labels()
  label changer_dossier_KGF
  label ajouter_dossier_cible, supprimer_dossier_cible, changer_dossier_cible
  label enregistrer_liste, executer
end_sub

sub constantes()
  dim fichier$    : fichier$ = "KGF.dll"
  dim inifile$    : inifile$ = "Installer_KGF.ini"
  dim crlf$      : crlf$ = chr$(13) + chr$(10)
end_sub

sub variables()
  dim dossier_KGF$
  dim i%
end_sub

sub GUI()
  width 0,800 : height 0,600
  caption 0,"Installation automatisée de "+fichier$

  alpha 1 : top 1,10 : left 1,10  : caption 1,"Dossier pour "+fichier$+":"
  alpha 2 : top 2,10 : left 2,130 : font_bold 2
  button 3 : top 3,10 : left 3,740 : width 3,40 : caption 3,"..."
    font_bold 3 : on_click 3,changer_dossier_KGF
    hint 3,"Changement du dossier de téléchargement de "+fichier$
  alpha 11 : top 11,40 : left 11,10 : caption 11,"Dossiers cible:"
  list 12 : top 12,40 : left 12,130 : width 12,600 : height 12,400
  button 13 : top 13,40 : left 13,740 : width 13,40 : caption 13,"+"
    font_bold 13 : on_click 13,ajouter_dossier_cible
    hint 13,"Ajout d'un nouveau dossier cible"
  button 14 : top 14,70 : left 14,740 : width 14,40 : caption 14,"X"
    font_bold 14 : on_click 14,supprimer_dossier_cible
    hint 14,"Supprimer le dossier cible sélectionné"
  button 15 : top 15,100 : left 15,740 : width 15,40 : caption 15,"..."
    font_bold 15 : on_click 15,changer_dossier_cible
    hint 15,"Modifier le dossier cible sélectionné"
   
  button 21 : left 21,130 : top 21,460 : caption 21,"Enregistrer"
    on_click 21,enregistrer_liste
    hint 21,"Enregistrer la configuration actuelle"
  button 22 : left 22,580 : top 22,460 : caption 22,"Exécuter..."
    font_bold 22 : font_size 22,16 : width 22,150
    on_click 22,executer
    hint 22,"Exécuter la distribution de "+fichier$+" vers tous les dossiers cible"
  check 23 : left 23,430 : top 23,460 : width 23,140 : caption 23,"Décompresser avant"
    font_bold 23 : font_color 23,255,0,0
   
  progress_bar 31 : hide 31 : top 31,500 : left 31,130 : width 31,width(12)
 
end_sub

sub charger_ini()
  dim_local f$
  if file_exists(inifile$)=0
    f$ = message_input$("Dossier de téléchargement de "+fichier$,"Dossier:",dir_current$+"\")
    if f$=dir_current$+"\"
      message "Le programe ne peut pas démarrer sans savoir où se trouve "+fichier$+" !"
      terminate
    end_if
    if right$(f$,1)<>"\" then f$ = f$ + "\"
    file_open_write 1,inifile$
    file_writeln 1,f$
    file_close 1
  end_if
  file_open_read 1,inifile$
  file_readln 1,dossier_KGF$
  caption 2,dossier_KGF$
  while file_eof(1)=0
    file_readln 1,f$
    item_add 12,f$
  end_while
  file_close 1
  if dir_exists(dossier_KGF$)=0
    message "Le dossier de téléchargement est invalide :"+crlf$+dossier_KGF$+crlf$+"Veuillez le corriger !"
  end_if

end_sub

sub changer_KGF()
  dim_local f$
  f$ = message_input$("Dossier de téléchargement de "+fichier$,"Dossier:",dossier_KGF$)
  if f$=dossier_KGF$
    message "Attention ! L'anomalie n'a pas été corrigée !
  else
    if right$(f$,1)<>"\" then f$ = f$ + "\"
    if dir_exists(f$)=0
      message "Le dossier de téléchargement est invalide :"+crlf$+f$+crlf$+"Veuillez le corriger !"
    else
      dossier_KGF$ = f$
      caption 2,dossier_KGF$
    end_if
  end_if
end_sub

sub ajouter_cible()
  dim_local f$
  f$ = message_input$("Nouveau dossier cible:","Dossier:","")
  if f$<>""
    if right$(f$,1)<>"\" then f$ = f$ + "\"
    if dir_exists(f$)=0
      message "Le dossier cible est invalide: "+crlf$+f$
    else
      if f$=dossier_KGF$
        message "Le dossier de téléchargement ne peut pas être un dossier cible !"
      else
        item_add 12,f$
      end_if
    end_if
  end_if
end_sub

sub supprimer_cible()
  dim_local n%, f$
  n% = item_index(12)
  if n%<1
    message "Aucun dossier cible n'est choisi."
    exit_sub
  end_if
  f$ = item_index$(12)
  if message_confirmation_yes_no("Voulez-vous vraiment supprimer la cible:"+crlf$+f$)=1
    item_delete 12,n%
  end_if
end_sub

sub changer_cible()
  dim_local n%, fold$, fnew$
  n% = item_index(12)
  if n%<1
    message "Aucun dossier cible n'est choisi."
    exit_sub
  end_if
  fold$ = item_index$(12)
  fnew$ = message_input$("Nouveau dossier cible:","Dossier:",fold$)
  if fnew$=fold$
    message "Aucun changement n'a été effectué."
  else
    if right$(fnew$,1)<>"\" then fnew$ = fnew$ + "\"
    if dir_exists(fnew$)=0
      message "Le dossier cible:"+crlf$+fnew$+crlf$+"n'existe pas."
    else
      if fnew$=dossier_KGF$
        message "Le dossier de téléchargement ne peut pas être un dossier cible !"
      else
        item_delete 12,n%
        item_insert 12,n%,fnew$
      end_if
    end_if
  end_if
end_sub

sub enregistrer()
  dim_local f$, i%
  file_open_write 1,inifile$
  file_writeln 1,dossier_KGF$
  if count(12)>0
    for i%=1 to count(12)
      file_writeln 1,item_read$(12,i%)
    next i%
  end_if
  file_close 1
end_sub

sub executer()
  dim_local f$, i%
  if dir_exists(dossier_KGF$)=0
    message "Le dossier de téléchargement est invalide :"+crlf$+dossier_KGF$+crlf$+"Veuillez le corriger !"
    exit_sub
  end_if
  if file_exists(dossier_KGF$+fichier$)=0
    message fichier$+" n'existe pas dans le dossier source:"+crlf$+dossier_KGF$
    exit_sub
  end_if
  if count(12)<1
    message "La liste des dossiers cible est vide !"
    exit_sub
  end_if
  for i%=1 to count(12)
    f$ = item_read$(12,i%)
    if dir_exists(f$)=0
      message "Ligne "+str$(i%)+": le dossier cible n'existe pas:"+crlf$+f$
      exit_sub
    end_if
  next i%
  min 31,0 : max 31,count(12) : position 31,0 : show 31
  if checked(23)=1
    f$ = "UPX -d -o"+chr$(34)+dossier_KGF$+"x.dll"+chr$(34)+" "+chr$(34)+dossier_KGF$+fichier$+chr$(34) : ' +" > NUL:"
    file_open_write 2,"installer_KGF.bat"
    file_writeln 2,f$
    file_close 2
    execute_wait "cmd /C test_installer_KGF.bat"
    file_delete dossier_KGF$+fichier$
    file_rename dossier_KGF$+"x.dll",dossier_KGF$+fichier$
    file_delete "installer_KGF.bat"
  end_if
  for i%=1 to count(12)
    position 31,i%
    f$ = item_read$(12,i%)
    if file_exists(f$+fichier$)=1 then file_delete f$+fichier$
    pause 100
    file_copy dossier_KGF$+fichier$,f$+fichier$
  next i%
  message "Terminé."
  hide 31
end_sub

EDIT

Ah, j'ai oublié de dire: c'est 100 % Panoramic, sans utilisation de DLL !


Dernière édition par Klaus le Jeu 27 Oct 2016 - 16:32, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2344
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 9:37

Bonjour Klaus cheers

Excellent utilitaire !
C'est vrai que KGF est partout dans mes programmes et là du coup j'ai toujours la bonne version.

Quelques remarques ;
- Attention au "/" à la fin du chemin source que j'ai du rajouté.
- Pourrais tu aussi mettre en place un avancement de la copie de chaque ligne du LIST
- Y a il une possibilité de rajouter un bouton pour choisir entre verson UPX ou NON

Bon j'ai fait le tour de mes requêtes ! Merci encore et bonne journée. sunny
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 11:32

Citation :
- Attention au "/" à la fin du chemin source que j'ai du rajouté.
C'est fait.
Citation :
- Pourrais tu aussi mettre en place un avancement de la copie de chaque ligne du LIST
C'est fait.
Code:
- Y a il une possibilité de rajouter un bouton pour choisir entre verson UPX ou NON
Je vais voir ça...

EDIT

Décompression - c'est fait.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 12:30

Voilà. Tout est fait et mis à jour dans le post initial.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2344
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 15:53

Merci Klaus.

Mais il y a quelques erreurs... Ligne 111 et 136 => RIGHT$(f$) => RIGHT$(f$,1)

Et il y a aussi des soucis dans les chemins ligne 251...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 16:33

Les deux premières anomalies (right$) sont corrigées. Mais je en vois pas le problème avec la ligne 251 ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2344
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 17:09

Aucune idée !

MESSAGE :
(113) FILE already exists. Line : 251


drunken drunken drunken

EDIT :
Je viens de trouver. Il s'agissait d'une application en cours d'utilisation. geek
Désolé Klaus...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 17:23

Tant mieux ! J'espère ce que petit outil servira aux utilisateurs de KGF.dll, et au-delà, à tous ceux qui doivent dupliquer un module quelconque dans une liste de dossiers.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   Jeu 27 Oct 2016 - 18:05

J’ai testé : Ok.
Bonne idée, ce petit outil, merci Klaus.

Personnellement  j’ai crée depuis longtemps, un dossier sur le bureau au nom de DLL où j’ai déposé KGF.DLL en plus d’autres DLL que j’utilise parfois.
J’ai ajouté le chemin de ce dossier DLL à la variable d’environnement PATH.
Dorénavant plus de soucis de chemin de KGF.DLL et pas besoin de dupliquer KGF.DLL dans d’autres dossier.
Une seule copie de KGF.DLL suffit pour tout le monde.
Il suffit d’écrire dans un programme qui utiliserait KGF.DLL, la ligne
Code:

DLL_ON "KGF.DLL"


Sans se soucier de son emplacement.

@Ceux qui ne connaissent pas ou qui ne se souviennent pas de comment ajouter un chemin à la variable d’environnement PATH,  consultez cette page.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Re   Jeu 27 Oct 2016 - 22:17

Perso, j' ai créé un dossier "c:\KGF" dans lequel je place la dernière version
et dans mes sources je mets une variable kgf$ avec l' adresse.
Plus de souci de multiplication de la dll dans mon ordi.
Cool
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Utilitaire automatique de distribution de KGF.dll (ou autre)   

Revenir en haut Aller en bas
 
Utilitaire automatique de distribution de KGF.dll (ou autre)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Plus d'accès au forum : redirection automatique vers un autre.
» intégration automatique d'un groupe à l'autre
» Comment rediriger automatiquement les visiteurs de mon forum vers un autre site ?
» Inscription automatique forum par un site
» caractéristiques safrane bvm5 et automatique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: