Création Programme d'autoinstallation

Fermé
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 - 27 avril 2009 à 20:42
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 - 29 avril 2009 à 01:00
Bonjour,

Étant actuellement élève en terminal STG GSI.
J'ai acquis quelque élément en programmation.
Mon problème est que je formate mon PC très souvent et j'aimerais savoir si quelqu'un pourrais m'aider a créer un programme ou même un petit fichier bat qui me permettrais d'installer tous mes programmes automatiquement.
j'ai commencer à créer ce bout de code :

@COLOR f1

@echo Nous sommes le %date%, il est %time%
@echo ---------------------------------------------
@echo.

:suite0
@Set /p check=Installer Avast Antivirus Edition Familiale [O/N], [S] pour Tous stopper?
@if /i "%check%"=="O" Goto :avast
@if /i "%check%"=="N" Goto :suite1
@if /i "%check%"=="S" Goto :stop
@if /i not "%check%"=="O""N""S" Goto :erreur0


:avast
@start /wait Installs\setupfre.exe

:suite1
@echo.

@Set /p check=Installer MagicISO [O/N], [S] pour Tous stopper?
@if /i "%check%"=="O" Goto :magic
@if /i "%check%"=="N" Goto :fin
@if /i "%check%"=="S" Goto :stop
@if /i not "%check%"=="O""N""S" Goto :erreur1

:magic
start /wait Installs\MagicISO\Setup\Setup_MagicISO.exe
GOTO :fin


:erreur0
@echo.
@echo.
@echo.
@echo Erreur de saisie, veuillez recommencer
@GOTO :suite0

:erreur1
@echo.
@echo.
@echo.
@echo Erreur de saisie, veuillez recommencer
@GOTO :suite1

:fin
@COLOR f6
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo ********************************************************************************
@echo *** ***
@echo *** !!! Installations Terminer avec succes !!! ***
@echo *** ***
@echo ********************************************************************************
@echo.
@echo.
@echo ________________________________________________________________________________
@echo Appuyer sur une touche pour finir le programme correctement
@echo ________________________________________________________________________________
@pause >nul

GOTO :eof

:stop
@COLOR 0c
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo.
@echo ********************************************************************************
@echo *** ***
@echo *** !!! Installations Annuler !!! ***
@echo *** ***
@echo ********************************************************************************
@echo.
@echo.
@echo ________________________________________________________________________________
@echo Appuyer sur une touche pour finir le programme correctement
@echo ________________________________________________________________________________
@pause >nul

@GOTO :eof

___________________________________________________________________________________________

Bon voila le petit bout que j'ai tenté de faire mais ce que je voudrais c'est être plus simple ou créant une interface dans laquelle je pourrais directement sélectionner les programmes à installer et ce grâce à des cases à cocher.

Merci pour votre aide
A voir également:

29 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
27 avril 2009 à 20:46
Tu fais un dossier avec tout les fichiers des installeurs.

Quand tu double clique sur un, ça l'installe, quand tu double clique pas dessus, ça ne l'installe pas :P

C'est pas mieux que des cases à cocher ça? :P

Sinon tu peux faire quand même ton interface graphique et tes petites cases à cocher par exemple en C#, ou en C++ ou en C, ou en plein d'autres langages.

Si tu veux le faire en C# par exemple, tu peux télécharger Visual C# Express Edition 2008, et faire un petit Form, et un bouton qui lancerait différent Exes en fonctions des checkbox cochées.

Bon amusement.
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
27 avril 2009 à 20:50
Merci mais comment faire ne fait, une fois que j'ai téléchargé ce fameux logiciel il me suffit de créer un interface graphique par l'intermédiaire du langage C# ou bien le créer comme un "espèce" de site internet.

en tous cas merci pour ta réponse
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
27 avril 2009 à 21:06
Tu vas créer une interface graphique (GUI) à l'aide du programme, ensuite tu créera un Event lorsque tu clique sur un bouton, qui vérifiera les différentes checkbox de l'interface graphique et exécutera différents exécutables en fonction des checkbox cochées.

Il n'y aura pas de page web ;)
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
27 avril 2009 à 21:08
Merci, c'est bon. je tente ça et je te redirais si ça à marché
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
27 avril 2009 à 21:10
Commence surtout par apprendre les bases de C#, moi je trouve que c'est un langage assez simple, n'hésite pas à poser une question sur ce post si tu ne sais pas comment faire telle ou telle chose.
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
27 avril 2009 à 23:36
Merci c'est noté
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 11:47
C'est juste pour que tu m'aide à créer une relation. la j'ai créer une case à cocher ("checkbox") et un bouton validé. mais je n'arrive pas à créer le lien entre les deux composants.
Par exemple lorsque je valide et que le bouton est coché, il lance un fichier; alors que si je clique sur le bouton validé et que la case n'est pas cocher, il ne lance rien et passe à une sorte de fenêtre où il me dit "installation terminer" ou un truc dans le genre.

Merci de prendre du temps pour moi.

Cdlt
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 avril 2009 à 13:45
	protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
	{
		if(checkbutton2.Active)
		{
			// On lance le programme d'installation correspondant
		}
	}


Ici je suppose que ton bouton s'appelle checkbutton2, je vérifie s'il est actif (coché), si c'est le cas, tu remplace le commentaire par un lancement d'un programme.

Un exemple est d'utiliser System.Diagnostics dans les using, voici un petit exemple :
using System.Diagnostics

Process myProc;
// Lancons le processus
myProc = Process.Start("filename");

// Le processus est lancé

// Arrêter le processus
myProc.CloseMainWindow();



Au final on a donc quelque chose comme ceci :
	protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
	{
		if(checkbutton2.Active)
		{
			Process aProc;
			
			aProc = Process.Start("ooffice -writer");    
                        // ici moi je suis sous linux donc ça me lance OpenOffice
                        // en mode "traitement de texte"
		}
	}
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 13:47
OK mon bouton s'appelle bien checkbutton mais ce que tu a écris je le met dans evenement.
Désolé pour toutes ces questions mais je débute désolé
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 avril 2009 à 13:52
Lorsque tu édite ton programme en mode graphique (là où tu met les boutons, les checkbox et tout ça), tu double clique sur le bouton et tu vas arriver dans le code là où il y a l'event bouton, dedans tu met ceci :

if(checkbutton2.Active)
{
	Process aProc;
			
	aProc = Process.Start("ooffice -writer");    
        // ici moi je suis sous linux donc ça me lance OpenOffice
        // en mode "traitement de texte"
}



N'oublie pas de mettre tout au début du document la directive :

using System.Diagnostics;

Sinon il va te dire que Process n'existe pas dans le contexte actuel.
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 13:53
OK jusque la je te comprend je fais la maquette de ce que j'ai préparé et je te l'envoie en image.
Laisse moi 5 petites minutes
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 14:03
Voila ma maquette mais on va dire que pour l'instant c'est un test pour apprendre à utilisé le langage.

http://img410.imageshack.us/img410/1114/44239576.jpg

Admet-on que le checkbox 1 soit avast et que le fichier exe est nommé "setupfre.exe" donc se serait :

using System.Diagnostics

Process myProc;
// Lancons le processus
myProc = Process.Start("setupfre.exe");


sachant que le fichier exe se trouve dans le même repertoire


?????
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 14:07
pour l'instant j'ai ça :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

}
}
}
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 14:10
Je sait pas si ça peut te servir mais je précise, je suis sur Vista et j'ai Microsoft Visual C# 2008 Express Edition
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 avril 2009 à 14:18
Tu en fais ceci alors :

N'oublie pas de remplacer checkbutton1 par le nom de ta checkbox chez toi.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			if(checkbutton1.Active)
			{
				Process installation1;
				
				installation1 = Process.Start("installeur.exe");

			}
		}
	}
}

// Pour ceci il faut qeu "installeur.exe" soit
// dans le même dossier que le .exe généré par
// Visual C# Express, c'est à dire dans le dossier
// du projet, puis dans bin puis debug, puis un peu
// fouiller pour trouver un .exe

Le fait que tu soit sous vista ne change pas grand chose ;)
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 14:20
je vais donc modifier mon script un fois tous finis avec les bon nom, je te l'envoi (pour une correction au cas ou).
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 14:52
Bon voila mon programme, enfin un début :

http://img207.imageshack.us/img207/7513/85871228.jpg

Sinon niveau programmation c'est :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Active)
{
Process installation_avast;

installation_avast = Process.Start("setupfre.exe");

}
}
{
if (checkBox2.Active)
{
Process installation_MagicISO;

installation_MagicISO = Process.Start("Setup_MagicISO.exe")

}
}
}
}

Voila dit moi s'il y a une erreur ou un beug quelque part.
Merci
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 avril 2009 à 14:57
Là il va te les lancer tous en même temps, si tu veux qu'il te les lances les un après les autres (le 2e lorsque le premier as fini, fait comme ceci :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Threading;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			if (checkBox1.Active)
			{
				Process installation_avast;
	
				installation_avast = Process.Start("setupfre.exe");

				while(!installation_avast.HasExited)
				{
					installation_avast.Refresh();
					Thread.Sleep(2000);
				}

				installation_avast.Close();
			}

			if (checkBox2.Active)
			{
				Process installation_MagicISO;

				installation_MagicISO = Process.Start("Setup_MagicISO.exe")

				while(!installation_MagicISO.HasExited)
				{
					installation_MagicISO.Refresh();
					Thread.Sleep(2000);
				}

				installation_MagicISO.Close();
			}
		}
	}
} 


N'oublie pas de rajouter le "using System.Threading;" pour pouvoir faire des Thread.Sleep(2000);
0
Issam21 Messages postés 166 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 9 mars 2012 22
28 avril 2009 à 15:02
Oua, c'est vraiment plus compliquer que je ne le pensait donc lorsque je fait un Threading, il attend la fin de l'installation mais admet-on avec ce code mais ou je met les installations afin de tester l'application.

sinon j'ai cette erreur :

Erreur 1 'WindowsFormsApplication1.Form1' ne contient pas une définition pour 'checkBox1_CheckedChanged' et aucune méthode d'extension 'checkBox1_CheckedChanged' acceptant un premier argument de type 'WindowsFormsApplication1.Form1' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) C:\Users\Ptit_Marocain\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.Designer.cs 47 75 WindowsFormsApplication1
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 avril 2009 à 15:09
On va décrire pas à pas une partie du programme :

if (checkBox1.Active)
{

Vérifie si la checkBox1 est bien cochée


Process installation_avast;
installation_avast = Process.Start("setupfre.exe");

Crée un objet de type Process sur la première ligne, puis lui assigne le processus démarré à l'aide de Process.Start("..."); ici donc le processus démarré sur setup.fre.exe


while(!installation_avast.HasExited)
{
    installation_avast.Refresh();
    Thread.Sleep(2000);
}

Le while est une boucle, on restera dans cette boucle tant que installation_avast n'est pas terminée (n'a pas quittée). On le sait grâce à !installation_avast.HasExited.
Dans cette boucle, on rafraichit le statut de installation_avast, et on fait une pause de 2000 millisecondes, c'est à dire 2 secondes. La pause c'est le Thread.Sleep(2000); et le refresh, c'est le rafraichissement du processus lancé.

installation_avast.Close();

Après que le programme ait donc quitté, on va libérerer les ressources qu'il prenait en mémoire avec la méthode Close() sur le processus bien qu'il soit déjà fermé.

Voilà pour ton erreur, vérifie que tu n'utilise pas checkbox3 alors que tu l'a renommé en quelque chose d'autre.
0