|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Bar de progression lors de l'installation d'un MSI [ Divers / Débutant(e) ] (obitskater)
Informations & options pour cette discussion
|
mardi 30 janvier 2007 à 11:15:20 |
Bar de progression lors de l'installation d'un MSI

obitskater
|
Bonjour à tous, c'est mon premier post ici... 
Voilà ma question, je suis en train de réaliser un setup avec plusieurs
pages: bienvenue, saisie d'information, acceptation de licence, etc...
Puis ma derniere doit representer une bar de progression qui tourne
jusqu'à ce que l'installation du .msi qui va avec soit terminée.
Pour executer le .msi je passe une execution de console comme dans cmd avec la commande msiexec, la ça marche!
Mon soucis est je ne sais pas trop comment réaliser cette bar de
progression qui tourne jusqu'à ce que l'installation soit terminée...
Pouvez vous s'il vous plait m'indiquer la marche à suivre, ou me dirigez vers des liens qui pourraient m'aider.
Merci d'avance.
|
|
|
|
mardi 30 janvier 2007 à 11:22:44 |
Re : Bar de progression lors de l'installation d'un MSI

Loda
|
salut,
bienvenue sur delphifr - Codes-Sources !
Pour ton problème, je pense pas que tu puisse faire un bar de progression qui indique l'avancement (%) de ton install si l'installation elle-même est faite par un programm tier (msiexec).
Tu peux "tricher" en faissant une bar de progression qui tourne en boucle (comme au démarrage de certain version de windows). ou juste afficher une animation image par image (gif), genre indiquant que le programme est pas planté.
Mais pour avoir une bar indiquant le % restant, je pense pas que cela soit possible si tu lance msiexec. Peut-être qqun d'autre personne aurront une solution magique pour toi...
bonne continuation,
Loda
PS: un très bon (et gratuit) installer : inno setup
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
|
|
|
|
mardi 30 janvier 2007 à 12:03:35 |
Re : Bar de progression lors de l'installation d'un MSI

obitskater
|
Oui en effet je ne cherche pas à realiser une progress bar qui indique le pourcentage de l'installation, mais plutot comme tu l'as dit une barre qui tourne en boucle jusqu'à ce que l'installation soit finie.
Mais comment savoir que l'installation est finie, et quand est ce qu'elle part pour démarrer la progressbar??? Là est mon gros probleme (ainsi que faire la progress bar qui tourne indéfiniment, je sais pas faire :s)
Désolé si je n'ai pas était plus clair.
|
|
|
|
mardi 30 janvier 2007 à 13:08:57 |
Re : Bar de progression lors de l'installation d'un MSI
|
|
mardi 30 janvier 2007 à 13:22:25 |
Re : Bar de progression lors de l'installation d'un MSI

obitskater
|
Justement, Cirec, je mettais servi de ton code source, qui en passant est trés bien fait chapeau bas :D. Je l'ai adapté à mon code.
En fait j'extrais la commande à executer dans un .ini que je stock dans une chaine de caractère "run". Cette ligne ressemble à ça : msiexec /I Agent.msi /qn ...
Puis dans mon code (quand j'arrive au form avec la progress bar) je met :
aCmdLine := PChar(cmdSwitch + run); // aCmdLine étant de type PChar ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_Hide);
Je n'ai pas encore testé mais ça devrait marché...
Ma question maintenant est que je devrais connaître mon point de départ de mon msiexec (comme tu me la signalé), or je n'en ai aucune idée...:s Par ailleurs tu dis que CMD me permet également de savoir quand l'éxecution est arrivé à son terme, et ça je ne sais pas comment le savoir...
Désolé de vous embetter mais là je bloque depuis ce matin !!!
|
|
|
|
mardi 30 janvier 2007 à 13:37:29 |
Re : Bar de progression lors de l'installation d'un MSI
|
|
mardi 30 janvier 2007 à 13:42:26 |
Re : Bar de progression lors de l'installation d'un MSI

obitskater
|
Ok merci bien, je m'en va essayer tout de suite!
|
|
|
|
mardi 30 janvier 2007 à 16:58:38 |
Re : Bar de progression lors de l'installation d'un MSI

obitskater
|
Bon... J'ai un nouveau probleme!
Ta commande ShellExecute marche niquel... Mais le soucis est que pour appeler ma page je fais:
scr4.show // scr4 étant le nom de la page où il y a la progressbar
labelscr4: scr4.progressbar1.Position:=0; scr4.timer1.Enabled:=true;
aCmdLine := PChar('/c "start /wait '+Variables.Values['run']); //Variables.Values['run'] renvoie la ligne de commande msiexec avec les parametres nécessaires.
with scr4 do begin progressbar1.Position:=progressbar1.Position+1;;//mise à jour toutes les secondes en 5 secondes timer1.Enabled:=true;
ShellExecute(Handle, Nil, 'CMD' , aCmdLine, Nil , SW_HIDE); if progressbar1.Position>= progressbar1.max then timer1.Enabled:=false;// on arrete le timer à la fin end; ShowMessage('ok!');
Donc deja comme vous pouvez le constater je ne SAIS PAS faire tourner la progressbar en boucle, et le msi s'execute ailleurs, ce qui fait que je vais direct au ShowMessage('ok!'); donc la progressbar n'a pas le temps de tourner en boucle...
C'est la galère....
|
|
|
|
mardi 30 janvier 2007 à 17:15:52 |
Re : Bar de progression lors de l'installation d'un MSI

obitskater
|
Bon puisque l'execmsi se lance dans un nouveau processus et que je doit attendre qu'il se finisse, peut être que je vais passer par un createprocess pour pouvoir attendre la fin et ainsi arréter la progressbar.
Mais je ne sais toujours pas comment faire tourner la progressbar indéfiniment, et j'hésite pour utiliser le createprocess car il faut que je passe des infos lorsque j'execute le msi, je m'explique par un exemple, la ligne de commande que je doit rentrer ressemble à ça:
msiexec /I AgentSetup.msi /qn FIRSTBACKUP=0 EMAILADRESS=%UserMail% PSWD=%UserPassword%
Or je ne sais pas s'il est possible de passer FIRSTBACKUP / EMAILADRESS / PSWD avec un createprocess... Si oui comment on fait siouplé...????
|
|
|
|
mardi 30 janvier 2007 à 17:56:14 |
Re : Bar de progression lors de l'installation d'un MSI

florenth
|
Réponse acceptée !
Salut,
Déjà, bienvenue sur Codes-Sources !
Pour ton problème de CreateProcess(), tu en as un très bon exemple ici (http://delphi.developpez.com/faq/?page=interexecution#lancercontroleapplication) qui fait justement ce que tu veux: attendre la fin d'execution du programme.
Après, pour avoir une progressbar qui "tourne en rond", Windows propose déjà une façon très simple de le faire, mais malheureusement, Delphi ne le gère pas nativement, il va falloir ajouter cette fonctionnalité.
Explications:
Tu crée une nouvelle unité contenant :
-------------------------------
unit NewProgressBar;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TProgressBar = class(ComCtrls.TProgressBar)
public
procedure CreateParams(var Params: TCreateParams); override;
procedure BeginAnim(Delay: Integer);
procedure StopAnim;
end;
implementation
const
PBS_MARQUEE = $08;
PBM_SETMARQUEE = WM_USER + 10;
procedure TProgressBar.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or PBS_MARQUEE;
end;
procedure TProgressBar.BeginAnim(Delay: Integer);
begin
SendMessage(Handle, PBM_SETMARQUEE, 1, Delay);
end;
procedure TProgressBar.StopAnim;
begin
SendMessage(Handle, PBM_SETMARQUEE, 0, 0);
end;
-------------------------------
Cette unité te parmet d'ajouter en RunTime la fonctionnalité que tu recherches. (Attention: elle doit être la DERNIERE unité de ta clause uses ET dans la partie interface)
Tu appelles ProgressB.BeginAnim(200) après avoir executé CreateProcess() et ProgressB.StopAnim() après que le .msi se soit executé pour stopper l'animation.
Voila, j'èspère avoir été clair.
A+
Flo
|
|
|
Cette discussion est classé dans : bar, installation, progression, réaliser, msi
Répondre à ce message
Sujets en rapport avec ce message
URGENT : problème d'installation de composant [ par Henri ]
problème d'installationBonjour,Je vous remercie de résoudre le problème suivant :Je voudrais installer un composant téléchargé sans son fichier *.pas
Pb Install Shield [ par Sandrine ]
Pour distribuer une application (développée sous Delphi 4) sur disquettes j'utilise InstallShield 5.L'installation se fait en mode silencieux: aucun m
Installation WINDOWS XP [ par Bde ]
Je possède le Backup du CD de WINDOWS XP, et je souhaite l'installer sur un second PC.Toutefois, je ne possède pas le code pour l'installation...Comme
Installation d'un composant [ par Jos ]
J'aimerais savoir comment installer un composant dont je n'ai que l'unité compilé, soit le fichier .dcuIl me demande toujours le .pas, mais je ne l'ai
Icone dans un TStatus bar ! [ par MAsterC ]
Je ne comprend pas !!!!Et sa ne marche pas !!tu peux tu me faire un exemple s'te plaît !merciMAsterC
progress bar [ par snakefinger ]
salut comment faire pour k1 progress bar suit un scan de fichiers.merci d'avance et.A+.
indy idFTP [ par Cyberdump ]
Salut,J'ai fait un petit logiciel de tranfert FTP. J'ai fait un sorte qu'il m'indique la progression du transfert à l'aide d'une progressebar, et de p
problème d'installation des composants Tnt [ par minipod ]
Comment installer le Pack de composants TntUnicodeControls ? J'arrive pas ?
pb installation composant Rx ? [ par Fredelphi ]
Bonjour,Je viens d'installer les composants de Rx library....Apparament je n'arrive pas a avoir les onglets de la librairie Rx...... j'ai Delphi 6...Q
CS-Bar [ par koko ]
Bon d'abord je ne sais pas ou je dois mettre ceci...alors, je n'arrive pas à installé la CS-Bar... il me dit que certain de mes fichiers sont perimés
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|