| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 | 
							- /** (c) Nullsoft, Inc.         C O N F I D E N T I A L
 
-  ** Filename: 
 
-  ** Project:
 
-  ** Description:
 
-  ** Author:
 
-  ** Created:
 
-  **/
 
- #include "main.h"
 
- #include "api.h"
 
- #include "../nu/AutoChar.h"
 
- #include "./setup/svc_setup.h"
 
- #include <api/service/waservicefactorybase.h>
 
- #include "./setup/postsetup.h"
 
- #define APSTUDIO_READONLY_SYMBOLS
 
- #include "./setup/setup_resource.h"
 
- #include "./setup/setupfactory.h"
 
- void DoInstall(int is_install)
 
- {
 
- 	//2=audiotype
 
- 	//4=videotype
 
- 	//8=cd
 
- 	//16=set needreg=1
 
- 	//32=dircontextmenus
 
- 	//64=playlisttype
 
- 	//128=run setup wizard
 
- 	if (is_install&128)
 
- 	{
 
- 		HRESULT hr(S_FALSE);
 
- 		HWND hwndStatus(NULL), hwndWA(NULL);
 
- 		waServiceFactory *psf = WASABI_API_SVC->service_getServiceByGuid(UID_SVC_SETUP);
 
- 		if (psf) 
 
- 		{
 
- 			svc_setup *pSvc = (svc_setup*)psf->getInterface();
 
- 			if (pSvc)
 
- 			{
 
- 				Setup_RegisterDefault();
 
- 				Setup_RegisterPlugins();
 
- 		
 
- 				hr = pSvc->Start(hMainWindow);
 
- 						
 
- 				if (S_OK == hr) 
 
- 				{
 
- 					pSvc->CreateStatusWnd(&hwndStatus);
 
- 					if (hwndStatus)
 
- 					{
 
- 						ShowWindow(hwndStatus, SW_SHOWNORMAL);
 
- 						UpdateWindow(hwndStatus);
 
- 					}
 
- 					pSvc->Save(hwndStatus);
 
- 					pSvc->ExecJobs(hwndStatus);
 
- 				}
 
- 				pSvc->Release();
 
- 			}
 
- 			WASABI_API_SVC->service_deregister(psf);
 
- 		}
 
- 		if (S_OK == hr && hwndStatus)
 
- 		{
 
- 			SetDlgItemTextW(hwndStatus, IDC_LBL_STATUS, getStringW(IDS_STATUS_RUNWA, NULL, 0));
 
- 		}
 
- 		out_deinit();
 
- 		in_deinit();
 
- 		w5s_deinit();
 
- 		
 
- 		if (S_OK == hr)
 
- 		{
 
- 			DWORD attr = GetFileAttributesW(INI_FILE);
 
- 			if(attr & FILE_ATTRIBUTE_READONLY)
 
- 			{
 
- 				SetFileAttributesW(INI_FILE,(attr - FILE_ATTRIBUTE_READONLY));
 
- 			}
 
- 			char szWAParam[MAX_PATH] = {0};
 
- 			WritePrivateProfileStringW(L"WinampReg", L"NeedReg", L"0", INI_FILE);
 
- 			GetPrivateProfileStringA("SETUP", "WAParam", "", szWAParam, sizeof(szWAParam)/sizeof(char), INI_FILEA);
 
- 			WritePrivateProfileStringW(L"SETUP", NULL, NULL, INI_FILE);
 
- 			PathQuoteSpacesA(szWAParam);
 
- 			StartWinamp((NULL != hwndStatus), &hwndWA, szWAParam);	
 
- 		}
 
- 		Wasabi_Unload();
 
- 		if (hwndStatus) DestroyWindow(hwndStatus);
 
- 		if (hwndWA && IsWindow(hwndWA)) SetForegroundWindow(hwndWA);
 
- 		RemoveRegistrar();
 
- 		ExitProcess(0);
 
- 		return;
 
- 	}
 
- 	config_setup_filetypes(0);
 
- 	config_registermediaplayer(1);
 
- 	
 
- 	if (is_install&32) config_adddircontext(0);
 
- 	else config_removedircontext(0);
 
- 	if (is_install&16) WritePrivateProfileStringW(L"WinampReg", L"NeedReg", L"1", INI_FILE);
 
- 	if (is_install&8)
 
- 	{
 
- 		if (!config_iscdplayer()) config_regcdplayer(1, 0);
 
- 	}
 
- 	else
 
- 	{
 
- 		if (config_iscdplayer()) config_regcdplayer(0, 0);
 
- 	}
 
- 	if (is_install&(4 | 2 | 64)) // audio or video or both
 
- 	{
 
- 		extern void _w_sW(const char *name, const wchar_t *data);
 
- 		wchar_t ext_list[16384] = {0};
 
- 		if (is_install&(4 | 2))
 
- 		{
 
- 			wchar_t *ext = in_getextlistW();
 
- 			wchar_t *a = ext;
 
- 			if (ext)
 
- 			{
 
- 				while (a && *a)
 
- 				{
 
- 					wchar_t buf[1024] = {0}, buf2[64] = {0};
 
- 					StringCchPrintfW(buf, 1024, L"test.%s", a);
 
- 					buf2[0] = 0;
 
- 					in_get_extended_fileinfoW(buf, L"type", buf2, 32);
 
- 					int type = _wtoi(buf2);
 
- 					if (lstrlenW(ext_list) + lstrlenW(buf) > 16128) break;
 
- 					{
 
- 						int doreg = (!type && (is_install & 2)) || (type && (is_install & 4));
 
- 						if (doreg) config_register(a, doreg);
 
- 						if (doreg)
 
- 						{
 
- 							if (*ext_list) StringCchCatW(ext_list, 16384, L":");
 
- 							StringCchCatW(ext_list, 16384, a);
 
- 						}
 
- 					}
 
- 					a += lstrlenW(a) + 1;
 
- 				}
 
- 				GlobalFree((HGLOBAL)ext);
 
- 				SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST | SHCNF_FLUSHNOWAIT, NULL, NULL);
 
- 			}
 
- 		}
 
- 		if (is_install&64)
 
- 		{
 
- 			const wchar_t *p;
 
- 			size_t i=0;
 
- 			while (NULL != (p = playlistManager->EnumExtension(i++)))
 
- 			{
 
- 				int doreg = !!(is_install & 64);
 
- 				if (doreg)
 
- 				{
 
- 					config_register((wchar_t*)p, doreg);
 
- 					if (*ext_list) StringCchCatW(ext_list, 16384, L":");
 
- 					StringCchCatW(ext_list, 8192, p);
 
- 				}
 
- 				p += lstrlenW(p) + 1;
 
- 			}
 
- 		}
 
- 		_w_sW("config_extlist", ext_list);
 
- 	}
 
- 	//CreateEQPresets();
 
- 	config_register(L"wsz", 1);
 
- 	config_register(L"wal", 1);
 
- 	config_register(L"wlz", 1);
 
- 	config_write(0);
 
- 	out_deinit();
 
- 	in_deinit();
 
- 	w5s_deinit();
 
- 	Wasabi_Unload();
 
- 	RemoveRegistrar();
 
- 	ExitProcess(0);
 
- }
 
 
  |