\r
using namespace std;\r
\r
-#define COMDLLPATH "axvlc.dll"\r
#define THREADING_MODEL "Both"\r
#define COMPANY_STR "VideoLAN"\r
#define PROGRAM_STR "VLCPlugin"\r
SHDeleteKey(hClsIDKey, psz_CLSID);\r
RegCloseKey(hClsIDKey);\r
}\r
+ CoTaskMemFree((void *)psz_CLSID);\r
\r
return S_OK;\r
};\r
{\r
DllUnregisterServer();\r
\r
+ char DllPath[MAX_PATH];\r
+ DWORD DllPathLen= GetModuleFileName(h_instance, DllPath, sizeof(DllPath)) ;\r
+ if( 0 == DllPathLen )\r
+ return E_FAIL;\r
+\r
LPCTSTR psz_CLSID = TStrFromGUID(CLSID_VLCPlugin);\r
\r
if( NULL == psz_CLSID )\r
// InprocServer32 key value\r
hSubKey = keyCreate(hClassKey, TEXT("InprocServer32"));\r
RegSetValueEx(hSubKey, NULL, 0, REG_SZ,\r
- (const BYTE*)COMDLLPATH, sizeof(COMDLLPATH));\r
+ (const BYTE*)DllPath, DllPathLen);\r
RegSetValueEx(hSubKey, TEXT("ThreadingModel"), 0, REG_SZ,\r
(const BYTE*)THREADING_MODEL, sizeof(THREADING_MODEL));\r
RegCloseKey(hSubKey);\r
\r
// register type lib into the registry\r
ITypeLib *typeLib;\r
- if( SUCCEEDED(LoadTypeLibEx(OLESTR("")COMDLLPATH, REGKIND_REGISTER, &typeLib)) )\r
+#ifndef OLE2ANSI\r
+ size_t typeLibPathLen = MultiByteToWideChar(CP_ACP, 0, DllPath, DllPathLen, NULL, 0);\r
+ if( typeLibPathLen > 0 )\r
+ {\r
+ LPOLESTR typeLibPath = (LPOLESTR)CoTaskMemAlloc(typeLibPathLen*sizeof(wchar_t));\r
+ MultiByteToWideChar(CP_ACP, 0, DllPath, DllPathLen, typeLibPath, typeLibPathLen);\r
+ if( SUCCEEDED(LoadTypeLibEx(typeLibPath, REGKIND_REGISTER, &typeLib)) )\r
+ typeLib->Release();\r
+ CoTaskMemFree((void *)typeLibPath);\r
+ }\r
+#else\r
+ if( SUCCEEDED(LoadTypeLibEx((LPOLESTR)DllPath, REGKIND_REGISTER, &typeLib)) )\r
typeLib->Release();\r
+#endif\r
+\r
+ CoTaskMemFree((void *)psz_CLSID);\r
\r
return S_OK;\r
};\r
/*\r
** easier to debug an application than a DLL on cygwin GDB :)\r
*/\r
-#include <stream.h>\r
+#include <iostream>\r
\r
STDAPI_(int) WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)\r
{\r
\r
Section /o "ActiveX plugin" SEC04\r
SectionIn 2 3\r
- SetOutPath $SYSDIR\r
+ SetOutPath "$INSTDIR"\r
File activex\axvlc.dll\r
- RegDLL $SYSDIR\axvlc.dll\r
+ RegDLL "$INSTDIR\axvlc.dll"\r
SectionEnd\r
\r
SubSection "File type associations" SEC05\r
!insertmacro UnRegisterExtensionSection ".wma"\r
!insertmacro UnRegisterExtensionSection ".wmv"\r
\r
- UnRegDLL $SYSDIR\axvlc.dll\r
- Delete /REBOOTOK $SYSDIR\axvlc.dll\r
+ UnRegDLL "$INSTDIR\axvlc.dll"\r
+ Delete /REBOOTOK "$INSTDIR\axvlc.dll"\r
\r
RMDir "$SMPROGRAMS\VideoLAN"\r
RMDir /r $SMPROGRAMS\VideoLAN\r