Provoquer l'ouverture d'un fichier ac un .exe

Pierro -  
 tupierro -
Bonjour,
Je cherche à créer un exe qui lorsque je le lance m'ouvre un autre fichier qui lui n'est pas un exe.
Tout le monde va me dire pourquoi tu fais pas un .bat, et ba parceque j'ai besoin d'un .exe pour pouvoir l'utiliser dans un autre logiciel (instalVise)
J'ai comemncé par créé un .bat
le fichier texte contient :
@ECHO OFF
ActivePerl.msi

Le fichier fonctionne très bien.

Le problème arrive quand je le compile avec powerbatch en .com là le fichier ne fonctionne plus. pas la peine de vous dire que le .com convertit en .exe ne fonctionne pas non plus...
Vous auriez pas un ptit conseil ?
A voir également:

10 réponses

Thiby Messages postés 10 Statut Membre 1
 
Euh juste pour éviter une erreur de noob

J'ai ajouté un test à l'ouverture du fichier :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE_BUFFER 4096

int main()
{
	char buffer[SIZE_BUFFER];
	char temp[SIZE_BUFFER];
	char next_car;

	FILE *fp;
	fp = fopen("liste_msi.txt", "r");

	if ( !fp )
	{
		fp = fopen("liste_msi.txt", "w");
		fclose(fp);
		return 0;
	}

	while( !feof(fp) )
	{
		memset(buffer, 0, SIZE_BUFFER);
		fscanf(fp, "%s", buffer);
		fscanf(fp, "%c", &next_car);

		while( !feof(fp) && next_car != '\n' )
		{
			memset(temp, 0, SIZE_BUFFER);
			fscanf(fp, "%s", temp);
			strcat(buffer, " ");
			strcat(buffer, temp);
			fscanf(fp, "%c", &next_car);
		}

		if ( strcmp(buffer, "") != 0 )
		{
			system(buffer);
			system("PAUSE");
		}
	}

	fclose(fp);

	return 0;
}


Ca permet au moins de créer le fichier texte, si celui-ci est perdu...
1
Thiby Messages postés 10 Statut Membre 1
 
Salut Pierro

Pourquoi ne pas faire un simple programme C ?
du style :

fichier test.c :
int main(int argc, char **argv)
{
  if ( argc != 1 )
   return 1;

  SYSTEM(argv[0])

  return 0;
}


Tu compiles et tu l'appelles ainsi :

test.exe path_du_fichier_à_lancer

Je me suis pas amuser à le tester mais en même temps je dois pas être loin de la vérité...
0
Pierro
 
euhh en fait je n'ai absolument aucune conaissance en programmation autre que le html...donc bon
Le bat que j'ai programmé c'était du copitage sur un autre trouvé sur le net.
Donc en fait je comprend pas trop ce que tu m'as dit de faire ni avec quel outils le faire :)
0
Thiby Messages postés 10 Statut Membre 1
 
Bon alors ok j'ai fait une petite erreur sans m'en apercevoir...

Revoici un code que j'ai ecris et qui fonctionne...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv)
{
	int len_com;
	char *buffer;

	if ( argc != 3 )
		return 1;

	len_com = strlen(argv[1])+strlen(argv[2])+2;
	buffer = (char*)malloc(sizeof(char)*len_com);
	memset(buffer, 0, len_com);

	sprintf(buffer, "%s %s", argv[1], argv[2]);

	system(buffer);
	return 0;
}



Pour l'appel :

prog nom_application nom_fichier

avec nom_application : l'application qui est capable d'ouvrir le fichier
et nom_fichier : le fichier à ouvrir

Maintenant tout cela est strictement inutile. Ben oui. Parce que si tu connais le fichier tu connais le programme capable de l'ouvrir. Par exemple si c'est un fichier ".xls", tu vas chercher excel et lui demander d'ouvrir ce fichier...
Donc ce que tu demandes c'est pas vraiment un programme executable à créer. Puisqu'ils existent déjà!
A toi d'aller les chercher là ou ils se trouvent...
Exemple : tu veux ouvrir un ".txt", alors tu tapes dans une fenêtre dos : c:\windows\system32\notepad.exe ton_fichier.txt
0

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

Posez votre question
Pierro
 
Merci beaucoup du temps que tu passe à me répondre. En fait je veux faire ça car je suis en train de faire un fichier d'installation contenant plusieurs logiciel de bureautique (c'est pour le boulot pour avoir UN fichier contenant tous les logiciels dont j'ai besoin après chaque install windows) je fais ça avec InstallVise sauf que installVise ne peut que lancer des fichiers .exe une fois les avoirs extrait dans le repertoire
Or dans ma liste de logicile y a un .msi d'où l'utilité du exe qui, une fois extrait avec le msi ouvrira le .msi.

Pour le code que tu m'as donné, je sais pas trop quoi en faire... surtout que tu parle de nom_application alors que en fait y a pas d'aplication qui va ouvrir le fichier que je veux...tu vois ce que je veux dire ?
0
Thiby Messages postés 10 Statut Membre 1
 
Ok je crois avoir compris ton problème...

Bien dans ce cas, tu peux utiliser mon programme. Je peux le modifier pour qu'il ne lance qu'un seul et unique programme ".msi"
Pour cela je peux le compiler et te passer l'executable.

Maintenant le mieux si tu as plusieurs ".msi", c'est que je peux modifier le programme pour qu'il lise une liste de programme ".msi" et le sexecute les uns a la suite des autres...

Enfin je connais pas "instalVise" mais d'après ce que tu dis, il semble que ce soit cela qu'il fasse?
0
Pierro
 
Merci beaucoup,
Je n'ai qu'un seul programme donc ne t'embete pas.
Si tu as le temps je veux que tu me compile ton petit programme qui va bien m'aider :)
mon adresse e-mail : tupierro@gmail.com
Si tu pouvais juste faire un zip du exo ce serai cool parceque parfois les exe se font zapper...

Merci beaucoup
0
Pierro
 
ah et sinon je pense que ça peut être utile le nom du fichier msi c'est
ActivePerl.msi
et il se trouvera dans le même répertoire que le fichier exe qui l'éxécutera
0
Thiby Messages postés 10 Statut Membre 1
 
Voila c'est envoyé...

Pour ceux qui veulent les sources :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE_BUFFER 4096

int main()
{
	char buffer[SIZE_BUFFER];
	char temp[SIZE_BUFFER];
	char next_car;

	FILE *fp;
	fp = fopen("liste_msi.txt", "r");

	while( !feof(fp) )
	{
		memset(buffer, 0, SIZE_BUFFER);
		fscanf(fp, "%s", buffer);
		fscanf(fp, "%c", &next_car);

		while( !feof(fp) && next_car != '\n' )
		{
			memset(temp, 0, SIZE_BUFFER);
			fscanf(fp, "%s", temp);
			strcat(buffer, " ");
			strcat(buffer, temp);
			fscanf(fp, "%c", &next_car);
		}

		if ( strcmp(buffer, "") != 0 )
			system(buffer);
	}

	fclose(fp);

	return 0;
}



Vous l'aurrez compris cela dépend d'un fichier texte nommé "liste_msi.txt" dont chaque ligne est une commande à effectuer
0
tupierro
 
Un grand merci à toi j'ai reçu le fichier tout fonctionne parfaitement, ça me simplifie le boulot merci !!
0