Formanty MFC ActiveX: dystrybucja formantów ActiveX
W tym artykule omówiono kilka problemów związanych z redystrybucji formantów ActiveX:
ANSI lub Unicode kontroli wersji
Instalowanie formantów ActiveX i redystrybuowane pliki dll
Rejestrowanie kontroli
[!UWAGA]
Aby uzyskać dodatkowe informacje na temat redystrybucji formantów ActiveX, zobacz Redystrybucji formantów.
ANSI lub Unicode kontroli wersji
Należy zdecydować, czy statek ANSI lub Unicode wersja formantu lub oba.Niniejsza decyzja opiera się na możliwości przenoszenia prawidłowego działania zestawów znaków ANSI i Unicode.
Formanty ANSI, które działają we wszystkich systemach operacyjnych Win32, pozwalają na maksymalnej przenośności między różnymi systemami operacyjnymi Win32.Formanty Unicode działają tylko systemu Windows NT (wersja 3.51 lub nowszy), ale nie w systemie Windows 95 lub Windows 98.Jeżeli przenoszenia jest główną troską, formanty ANSI statku.Jeżeli formanty będzie uruchamiany tylko w systemie Windows NT, można wysłać formantów Unicode.Można również wybrać do wysyłki zarówno i aplikacja zainstalować wersję najbardziej odpowiedni dla systemu operacyjnego użytkownika.
Instalowanie formantów ActiveX i redystrybuowane pliki dll
Podane z formantów ActiveX przez program instalacyjny należy utworzyć specjalne podkatalog katalogu systemu Windows i instalowanie formantów.OCX w nim plików.
[!UWAGA]
Użyj okna GetWindowsDirectory API w programie Instalator, aby uzyskać nazwę katalogu systemu Windows.Możesz uzyskać nazwy podkatalogu od nazwy firmy lub produktu.
Program instalacyjny należy zainstalować niezbędne redystrybuowane pliki DLL w katalogu systemowym Windows.Jeśli jakiś bibliotek DLL jest już obecny na komputerze użytkownika, program instalacyjny należy porównać ich wersje z wersji, której przeprowadzana jest instalacja.Zainstaluj ponownie plik tylko wtedy, gdy jego numer wersji jest wyższy niż plik, który został już zainstalowany.
Ponieważ formanty ActiveX mogą być używane tylko w aplikacji kontenera OLE, istnieje potrzeba do dystrybucji pełny zestaw bibliotek DLL OLE z formantów.Można zakładać, że zawierające aplikacji (lub samego systemu operacyjnego) ma standardowy bibliotek DLL OLE zainstalowana.
Rejestrowanie kontroli
Przed użyciem formantu, odpowiednie wpisy należy utworzyć dla niej w bazie danych rejestracji systemu Windows.Niektóre kontenery formantu ActiveX zapewniają element menu dla użytkowników, aby zarejestrować nowe formanty, ale ta funkcja może nie być dostępny w pojemnikach, wszystkie.W związku z tym możesz swój program instalacyjny, aby formanty ActiveX, jeżeli są zainstalowane.
Jeśli wolisz, możesz napisać swój program instalacyjny, aby zarejestrować formant bezpośrednio w zamian.
Użycie LoadLibrary Windows API załadować formantu DLL.Następnie należy użyć polecenia GetProcAddress celu uzyskania adresu funkcji "DllRegisterServer".Wreszcie, wywołanie DllRegisterServer funkcji.Poniższy przykładowy kod przedstawia jedną z możliwych metod, gdzie hLib przechowuje dojście Biblioteka formantów i lpDllEntryPoint przechowuje adres funkcji "DllRegisterServer".
HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
AfxMessageBox(IDS_LOADLIBFAILED); //unable to load DLL
iReturn = FAIL_LOAD; //unable to load DLL
}
// Find the entry point.
lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
if (lpDllEntryPoint != NULL)
(*lpDllEntryPoint)();
else
;// Unable to locate entry point
Zaletą bezpośrednio rejestrowania formantów jest, że nie trzeba wywołać i załadować oddzielnym procesie (mianowicie REGSVR32), skracając czas instalacji.Ponadto ponieważ rejestracja jest proces wewnętrzny, program instalacyjny może obsługiwać błędy i może nieprzewidziane sytuacje lepiej niż proces zewnętrzny.
[!UWAGA]
Zanim Twój program instalacyjny instaluje formant ActiveX, należy zadzwonić OleInitialize.Po zakończeniu programu Instalator, call OleUnitialize.Gwarantuje to, że pliki DLL systemu OLE są w odpowiednim stanie dla rejestrowania formantów ActiveX.
Należy zarejestrować MFCx0.DLL.