IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Msado15.dll et MSVCR70.dll introuvables


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut [MFC] Msado15.dll et MSVCR70.dll introuvables
    Bonjour à tous.

    J'ai créé un programme de déploiement auquel ces deux dll sont empaquétés mais seulement lorsque je vais l'installer chez le client il ne m'inscrit pas les deux dll dans le System.

    A quoi cela est il du?

    Merci d'avance pour vos contributions.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Ton programme les inscrit-il ? avec regsvr32.exe ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par nico-pyright(c)
    Ton programme les inscrit-il ? avec regsvr32.exe ?
    Comme ces dll sont empaquétés dans le programme d'installation je pensait que leur inscription se faisait au moment d'installer le produit final.

    Comment faites vous pour installer vos applications MFC chez les client?

    Merci d'avance.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    moi j'utilise un logiciel tiers, comme Wise
    mais bon, s'il faut lancer un regsvr32, c'est pas la mort non plus
    De toutes facons, je pense que c'est prévu, il doit y avoir une option quelque part, mais comme je ne me suis jamais servi de ca, je ne peux pas plus te renseigner, désolé

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Merci Nico.

    Quelqu'un peut il me dire comment appeler Regserv32 automatiquement lors de l'installation d'une application faite avec VC++ .NET 2002?

  6. #6
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    effectivement malgrès son nom Msado15.dll est une ActiveX, donc Regsvr32 s'impose...

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par matazz
    effectivement malgrès son nom Msado15.dll est une ActiveX, donc Regsvr32 s'impose...
    Existe t il un moyen d'inscrire cette dll dynamiquement au moment de l'installation chez le clien?

    merci

  8. #8
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    tu peut faire un .bat, et le lancer par l'install je pense, mais ton installateur doit pouvoir te le faire(le regsvr32)....

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par matazz
    tu peut faire un .bat, et le lancer par l'install je pense, mais ton installateur doit pouvoir te le faire(le regsvr32)....
    STP peux tu m'expliquer comment fonctionne le .bat et comment l'intégrer au programme d'installation?

    Merci d'avance

  10. #10
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    dans un fichier texte tu met
    et tu renomme le fichier .txt en.bat
    c'est tout.
    Tu utilise quoi comme installateur ?

  11. #11
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par matazz
    Tu utilise quoi comme installateur ?
    J'ajoutes juste un projet de déploiement à ma solution. Et sur la machine cliente je double clique sur le fichier SETUP et il installe l'application.

    Je ne sais pas si j'ai repondu à la question.

  12. #12
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    ben je connais pas trop .NET, donc je t'avoue que je peut pas trop t'aider la-dessus...

  13. #13
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Ailleurs ça se passerait comment?

  14. #14
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par annedjomo
    Citation Envoyé par matazz
    effectivement malgrès son nom Msado15.dll est une ActiveX, donc Regsvr32 s'impose...
    Existe t il un moyen d'inscrire cette dll dynamiquement au moment de l'installation chez le clien?

    merci
    oui tu peux faire un regsvr32 par programme .

    d'apres un article MSDN:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
     
    #include "stdafx.h"
    #include <ole2.h>
    #include <stdio.h>
     
    #define FAIL_ARGS   1
    #define FAIL_OLE    2
    #define FAIL_LOAD   3
    #define FAIL_ENTRY  4
    #define FAIL_REG    5
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
     
    const TCHAR _szAppName[] = _T("RegSvr32");
    const char _szDllRegSvr[] = "DllRegisterServer";
    const char _szDllUnregSvr[] = "DllUnregisterServer";
    HINSTANCE _hInstance;
     
    BOOL _bSilent;
    BOOL _bConsole;
     
    #define SafePutts(string) ((stdout >= 0) ? _putts(string) : 0)
     
    void
    FormatString2(
    	LPTSTR lpszOut,
    	LPCTSTR lpszFormat,
    	LPCTSTR lpsz1,
    	LPCTSTR lpsz2
    	)
    {
    	LPCTSTR pchSrc = lpszFormat;
    	LPTSTR pchDest = lpszOut;
    	while (*pchSrc != '\0') {
    		if (pchSrc[0] == '%' && (pchSrc[1] >= '1' && pchSrc[1] <= '2')) {
    			lstrcpy(pchDest, (LPCTSTR)(pchSrc[1] == '1' ? lpsz1 : lpsz2));
    			pchDest += lstrlen(pchDest);
    			pchSrc += 2;
    		} else {
    			if (_istlead(*pchSrc))
    				*pchDest++ = *pchSrc++; // copy first of 2 bytes
    			*pchDest++ = *pchSrc++;
    		}
    	}
    	*pchDest = '\0';
    }
     
    #define MAX_STRING 1024
     
    void
    DisplayMessage(
    	UINT ids,
    	LPCTSTR pszArg1 = NULL,
    	LPCTSTR pszArg2 = NULL,
    	BOOL bUsage = FALSE,
    	BOOL bInfo = FALSE
    	)
    {
    	if (_bSilent && !_bConsole)
    		return;
     
    	TCHAR szFmt[MAX_STRING];
    	LoadString(_hInstance, ids, szFmt, MAX_STRING);
     
    	TCHAR szText[MAX_STRING];
    	FormatString2(szText, szFmt, pszArg1, pszArg2);
    	if (bUsage) {
    		int cch = _tcslen(szText);
    		LoadString(_hInstance, IDS_USAGE, szText + cch, MAX_STRING - cch);
    	}
     
    	if (! _bSilent)
    		MessageBox(NULL, szText, _szAppName,
    			MB_TASKMODAL | (bInfo ? MB_ICONINFORMATION : MB_ICONEXCLAMATION));
     
    	if (_bConsole) {
    		TCHAR szMessage[MAX_STRING];
    		FormatString2(szMessage, _T("%1: %2\n"), _szAppName, szText);
    		SafePutts(szMessage);
    	}
    }
     
    inline void
    Usage(
    	UINT ids,
    	LPCTSTR pszArg1 = NULL,
    	LPCTSTR pszArg2 = NULL
    	)
    {
    	DisplayMessage(ids, pszArg1, pszArg2, TRUE);
    }
     
    inline void
    Info(
    	UINT ids,
    	LPCTSTR pszArg1 = NULL,
    	LPCTSTR pszArg2 = NULL
    	)
    {
    	DisplayMessage(ids, pszArg1, pszArg2, FALSE, TRUE);
    }
     
    int _RegSvr32(LPSTR strarg)
    {
    	int iReturn = 0;
    	HRESULT (STDAPICALLTYPE * lpDllEntryPoint)(void);
     
    	BOOL bVisualC = FALSE;
    	BOOL bUnregister = FALSE;
    	LPCSTR pszDllEntryPoint = _szDllRegSvr;
    	LPCSTR pszDllName = NULL;
    	LPCSTR pszTok;
    	CStringArray Listarg;
    	_hInstance = AfxGetInstanceHandle();
     
    	// Parse command line arguments.
    	int iTok=0;
    	while(pszTok=strtok((iTok?NULL:strarg)," "))	
    	{
    		iTok++;
    		if ((pszTok[0] == '-') || (pszTok[0] == '/'))
    		{
    			switch (pszTok[1]) 
    			{
    				case 'v':
    				case 'V':
    					bVisualC = TRUE;
    					break;
     
    				case 's':
    				case 'S':
    					_bSilent = TRUE;
    					break;
     
    				case 'u':
    				case 'U':
    					bUnregister = TRUE;
    					pszDllEntryPoint = _szDllUnregSvr;
    					break;
     
    				case 'c':
    				case 'C':
    					_bConsole = TRUE;
    					break;
     
    				default:
    					Usage(IDS_UNRECOGNIZEDFLAG, pszTok);
    					return FAIL_ARGS;
    			}
    		}
    		else
    		{
    			if (pszDllName == NULL)
    			{
    				pszDllName = pszTok;
    				Listarg.Add(pszTok);
    				while((pszTok=strtok(NULL," "))) Listarg.Add(pszTok);
    				break;
    			}
    			else
    			{
    				Usage(IDS_EXTRAARGUMENT, pszTok);
    				return FAIL_ARGS;
    			}
    		}
    	}
     
    	if (pszDllName == NULL)
    	{
    		if (bVisualC)
    			DisplayMessage(IDS_NOPROJECT);
    		else
    			Usage(IDS_NODLLNAME);
     
    		return FAIL_ARGS;
    	}
     
    	// Initialize OLE.
    	if (FAILED(OleInitialize(NULL)))
    	{
    		DisplayMessage(IDS_OLEINITFAILED);
    		return FAIL_OLE;
    	}
     
    	SetErrorMode(SEM_FAILCRITICALERRORS);       // Make sure LoadLib fails.
     
    	for (iTok=0; iTok <Listarg.GetSize(); iTok++)
    	{
    		pszDllName = Listarg.GetAt(iTok);
     
    		// Load the library.
    		HINSTANCE hLib = LoadLibraryEx(pszDllName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
     
    		if (hLib < (HINSTANCE)HINSTANCE_ERROR)
    		{
    			TCHAR szError[12];
    			wsprintf(szError, _T("0x%08lx"), GetLastError());
    			DisplayMessage(IDS_LOADLIBFAILED, pszDllName, szError);
    			iReturn = FAIL_LOAD;
    			goto CleanupOle;
    		}
     
    		// Find the entry point.
    		(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, pszDllEntryPoint);
     
    		if (lpDllEntryPoint == NULL)
    		{
    			TCHAR szExt[_MAX_EXT];
    			_tsplitpath(pszDllName, NULL, NULL, NULL, szExt);
     
    			if ((_stricmp(szExt, ".dll") != 0) && (_stricmp(szExt, ".ocx") != 0))
    				DisplayMessage(IDS_NOTDLLOROCX, pszDllName, pszDllEntryPoint);
    			else
    				DisplayMessage(IDS_NOENTRYPOINT, pszDllName, pszDllEntryPoint);
     
    			iReturn = FAIL_ENTRY;
    			goto CleanupLibrary;
    		}
     
    		// Call the entry point.
    		if(FAILED((*lpDllEntryPoint)()))
    		{
    			DisplayMessage(IDS_CALLFAILED, pszDllEntryPoint, pszDllName);
    			iReturn = FAIL_REG;
    			goto CleanupLibrary;
    		}
     
    		Info(IDS_CALLSUCCEEDED, pszDllEntryPoint, pszDllName);
     
    CleanupLibrary:
    		FreeLibrary(hLib);
    	}
     
    CleanupOle:
    	OleUninitialize();
    	Listarg.RemoveAll();
    	return iReturn;
    }
    rajouter la chaine:
    IDS_USAGE "\n\nUsage: regsvr32 [/u] [/s] dllname\n/u - Unregister server\n/s - Silent; display no message boxes\n/c - Console output"
    dans la string table.

    fonction à faire dans la classe d'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // --------------------------------------------------------------
    int MyWinApp::RegisterActivex(LPCSTR szOcxName,bool bDll/*=false*/)
    {
    	CString str,strRegistre;
    	int ret=0;
     
    	str=GetProfileString("REGISTER", szOcxName);
    	strRegistre.Format("-s %s.%s",szOcxName,(bDll?"dll":"ocx"));
    	if(str.IsEmpty())
    	{
    		ret=_RegSvr32(strRegistre);		
    		WriteProfileString("REGISTER",szOcxName,"1");
    	}	
    	return ret;
    }
    utilisation dans la classe d'application dans InitInstance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // ocx
    RegisterActivex("MonOcx");
    // dll
    RegisterActivex("MyDll",true);

  15. #15
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Et si on souhaite automatiser l'inscription des dll se faisant via regasm et gacutil?

    Merci déjà.

Discussions similaires

  1. [DLL] sous repertoire dll introuvable
    Par adurandet dans le forum C++
    Réponses: 12
    Dernier message: 17/10/2007, 13h44
  2. [VC2005]dll MFC80u et msvcr80 introuvable
    Par Harry_Tauper dans le forum MFC
    Réponses: 2
    Dernier message: 19/06/2007, 10h00
  3. VB .Net 2003 - DLL - point d'entrée introuvable
    Par Malebogia dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/09/2006, 18h04
  4. [SWT-WEbstart] .dll et swt.jar introuvable ?
    Par ionix dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2006, 15h55
  5. [MFC] msado15.dll
    Par annedjomo dans le forum MFC
    Réponses: 4
    Dernier message: 24/02/2005, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo