Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

'Installation' d'un patch

7 réponses
Avatar
bitwyse
Salut tlm

J'ai besoin de pouvoir faire installer un petit patch sur les ordis de
certains de mes clients. C'est tellement bête qu'il ne mérite pas un
vrai programme d'installation: rien que 2 fichiers à copier dans le
répertoire de Windows (95, 98...). Seulement il faut qu'il s'exécute au
démarrage, et pour le garder le plus simple que possible je veux y créer
un raccourci dans le dossier de démarrage (plutôt qu'une entrée dans la
BDR) - en plus les gens s'en méfient moins...
La première partie est acquise - soit un simple '.bat' MSDOS ("copy 8.3
%windir%") soit un fichier .inf ("DefaultDestDir=LDID_WIN").

Mais comment savoir quel est le répertoire de démarrage?
Selon la version de Windows (langue...) ça peut être par exemple
'C:\Windows\Menu Démarrer\Programmes\Démarrage' ou
'C:\Windows\Start Menu\Programs\Startup'
...ou bien n'importe quels autres partition et répertoire que
l'utilisateur aura sélectionnés (chez moi c'est 'C:\Windows\Démarrage').

Je peux interroger la BDR avec regedit à
(HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders -
'Startup' et/ou
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell
Folders - 'Startup')
puis extraire le chemin adéquat - mais je cherche une solution vraiment
_simple_.

Tant que je sache il n'existe pas de variable d'environnement MSDOS
%XXX%, ni de 'LDID_XXX' pour utiliser dans un fichier '.inf'.
Quelqu'un connaît-il une réponse?

A+

--
bitwyse
"Si ce n'est pas cassé, n'essaye pas de le retaper."

7 réponses

Avatar
Christian ASTOR
bitwyse a écrit:


Mais comment savoir quel est le répertoire de démarrage?



CSIDL_STARTUP
Avatar
Bruno Barral
Le 06/05/2004, bitwyse a supposé :
Salut tlm

J'ai besoin de pouvoir faire installer un petit patch sur les ordis de
certains de mes clients. C'est tellement bête qu'il ne mérite pas un
vrai programme d'installation: rien que 2 fichiers à copier dans le
répertoire de Windows (95, 98...). Seulement il faut qu'il s'exécute au
démarrage, et pour le garder le plus simple que possible je veux y créer
un raccourci dans le dossier de démarrage (plutôt qu'une entrée dans la
BDR) - en plus les gens s'en méfient moins...
La première partie est acquise - soit un simple '.bat' MSDOS ("copy 8.3
%windir%") soit un fichier .inf ("DefaultDestDir=LDID_WIN").

Mais comment savoir quel est le répertoire de démarrage?
Selon la version de Windows (langue...) ça peut être par exemple
'C:WindowsMenu DémarrerProgrammesDémarrage' ou
'C:WindowsStart MenuProgramsStartup'
...ou bien n'importe quels autres partition et répertoire que
l'utilisateur aura sélectionnés (chez moi c'est 'C:WindowsDémarrage').

Je peux interroger la BDR avec regedit à
(HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders -
'Startup' et/ou
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell
Folders - 'Startup')
puis extraire le chemin adéquat - mais je cherche une solution vraiment
_simple_.

Tant que je sache il n'existe pas de variable d'environnement MSDOS
%XXX%, ni de 'LDID_XXX' pour utiliser dans un fichier '.inf'.
Quelqu'un connaît-il une réponse?

A+



Quelques in fos ici (bien que ce soit du Windows CE, il doit y avoir
pratiquement la même chose sous les autres Windows) :

http://www.pocketpcdn.com/articles/run_at_startup.html

--
---
Internet, c'est comme un grand restaurant : on choisit des choses dans
des menus ... et on se plaint sans arrêt de la lenteur des serveurs !
[ByB]
Avatar
bitwyse
Bonjour

Christian ASTOR a écrit :

CSIDL_STARTUP



Merci.
Oui, en effet ça marche parfaitement.

Seulement - 4 petites lignes de VC++ avec un appel à
SHGetSpecialFolderPath() - ça donne un .exe de 168kO.
Puisque le patch lui même ne fait que 9kO, c'est un peu lourd...

Y a pas une autre façon de le faire que j'ai pas vue?

A+

--
bitwyse
"Si ce n'est pas cassé, n'essaye pas de le retaper."
Avatar
AG
bitwyse wrote:
Y a pas une autre façon de le faire que j'ai pas vue?



Tu fais un fichier texte ou tu leurs expliques comment le faire eux-même.
Avatar
bitwyse
Bonjour

Bruno Barral a écrit :

Quelques in fos ici ...



Merci - en fait ça parle de la même méthode qu'a proposée Christian.

Je vais distribuer ce correctif par mail, et il me paraît un peu bête
d'envoyer un patch de 9kO avec un programme d'installation 20 fois plus
gros... (200kO dans sa BAL, ça plaît pas à tlm).
Je n'ai pas trouvé une solution plus 'économique', donc j'ai fait un
.inf pour tout faire: la copie des fichiers et l'ajout d'une clé 'Run'
dans la BDR. Comme ça le tout fait < 10kO et reste le plus simple que
possible pour le client (dont certains auront déjà du mal à comprendre
la démarche... ;-)

A+

--
bitwyse
"Si ce n'est pas cassé, n'essaye pas de le retaper."
Avatar
Christian ASTOR
bitwyse a écrit:


Seulement - 4 petites lignes de VC++ avec un appel à
SHGetSpecialFolderPath() - ça donne un .exe de 168kO.
Puisque le patch lui même ne fait que 9kO, c'est un peu lourd...




Juste pour l'exemple, 1 bidule comme ça fait 1 K en release (VC++ 6) =>

#pragma comment(lib, "user32")
#pragma comment(linker, "/subsystem:windows /opt:nowin98 /entry:entry
/merge:.rdata=.text /ignore:4078")
// suppression /GZ en Debug

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#pragma data_seg(".text")

typedef HRESULT (__stdcall * PFNSHGETFOLDERPATH)(HWND, int, HANDLE,
DWORD, LPSTR);

SHGetPath(int nFolder, char* sPath)
{
PFNSHGETFOLDERPATH pfnSHGetFolderPath;
HMODULE hMod = LoadLibrary("SHFolder.dll");
if (hMod)
(*(FARPROC*)&pfnSHGetFolderPath = GetProcAddress(hMod,
"SHGetFolderPathA"));
else
pfnSHGetFolderPath = NULL;

if (pfnSHGetFolderPath != NULL )
pfnSHGetFolderPath(NULL, nFolder, NULL, 0, sPath);
else
sPath[0] = (char)NULL;
FreeLibrary(hMod);
}

int APIENTRY entry(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char sPath[MAX_PATH];
//SHGetSpecialFolderPath(NULL, sPath, 7, TRUE);
SHGetPath(7, sPath);
MessageBox(NULL, sPath, "Info", MB_OK);
return 0;
}
Avatar
AMcD®
bitwyse wrote:

Seulement - 4 petites lignes de VC++ avec un appel à
SHGetSpecialFolderPath() - ça donne un .exe de 168kO.
Puisque le patch lui même ne fait que 9kO, c'est un peu lourd...

Y a pas une autre façon de le faire que j'ai pas vue?



Oui, sans doute ne connais tu pas le mode Release :o). 168 Ko pour 4 lignes
de C++, je demande à voir...

--
AMcD®

http://arnold.mcdonald.free.fr/