WMEncoder SDK二次開發(fā)_第1頁
WMEncoder SDK二次開發(fā)_第2頁
WMEncoder SDK二次開發(fā)_第3頁
WMEncoder SDK二次開發(fā)_第4頁
WMEncoder SDK二次開發(fā)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、創(chuàng)建再分發(fā)安裝1.調(diào)用再分發(fā)程序包之前,請(qǐng)首先讓您的安裝例程安裝您的應(yīng)用程序文件,并進(jìn)行所需的設(shè)置。2.安裝WMFDist.exe。您可以使用/Q:A標(biāo)志執(zhí)行安靜的無人參與安裝,并在應(yīng)用程序(例女如WMFDist.exe/Q:A)安裝期間不顯示再分發(fā)安裝的用戶界面。然后您的例程必須檢測(cè)結(jié)束時(shí)是否需要重新啟動(dòng)重新啟動(dòng)。WMFdist.exe命令行參數(shù)將WMFDist.exe作為應(yīng)用程序的一部分進(jìn)行安裝時(shí),管理員或開發(fā)人員可以通過使用下列命令,來控制安裝UI顯示和重新啟動(dòng)重新啟動(dòng)行為:WMFdist.exe/Q:A此命令指定無人參與安裝,并且不出現(xiàn)任何UI或警告。注下一節(jié)中的代碼示例說明了女何在程

2、序包運(yùn)行結(jié)束之后確定成功還是失敗,以及是否需要重新啟動(dòng)。檢測(cè)WMFDist.exe的安裝狀態(tài)下面的代碼可用于WindowsMediaFormatSDKruntime再分發(fā)或WindowsMediaPlayer再分發(fā)程序包。安裝狀態(tài)將作為HRESULT存儲(chǔ)在下列位置:HKCU,SoftwareMicrosoftMediaPlayerSetup,REG_SZ,valueInstallResultHRESULT值可用于確定安裝是否成功以及是否需要重新啟動(dòng)。下面的C+示例代碼可包含在一個(gè)調(diào)用安裝應(yīng)用程序中。此代碼會(huì)根據(jù)組件再分發(fā)程序包中WindowsMedia安裝寫入的HRESULT值,將fSucce

3、ss和fRebootNeeded變量設(shè)置為合適的true或false。#include#include3/IfNS_S_REBOOT_REQUIREDisundefined,use0 xD2AF9.#ifndefNS_S_REBOOT_REQUIRED#defineNS_S_REBOOT_REQUIRED0 xd2af9#endif9intmain(void)10曰田HKEYhKey=NULL;BOOLfSuccess=FALSE;BOOLfRebootNeeded=FALSE;14if16171819白由202122if242526白由27282930313233343536白由ERROR_

4、SUCCESS=RegOpenKeyExA(HKEY_CURRENT_USER,SoftwareMicrosoftMediaPlayerSetup0,KEY_QUERY_VALUE,&hKey)charszResult64;DWORDdwResult=sizeof(szResult);ERROR_SUCCESS=RegQueryValueExA(hKey,InstallResult,NULL,NULL,(LPBYTE)szResult,&dwResult)sscanf(szResult,%x,&dwResult);fSuccess=SUCCEEDED(dwResult);fRebootNeed

5、ed=(NS_S_REBOOT_REQUIRED=dwResult);RegCloseKey(hKey);if(fSuccess)4/37printf(SetupSucceeded);38if(fRebootNeeded)39printf(ArestartISrequiredn);40else4142printf(ArestartISNOTrequiredn);4344白由else45printf(SetupFailed);46if(fRebootNeeded)47printf(ArestartISrequiredn);48else4950printf(ArestartISNOTrequire

6、dn);5152Lreturn0;54如果要將再分發(fā)程序包包括在您的應(yīng)用程序中,則當(dāng)您在安裝例程中調(diào)用該再分發(fā)程序包時(shí),可以使用/Q:A標(biāo)志。這樣會(huì)抑制用戶界面(UI)的顯示。因?yàn)閃MFdist.exe程序包的設(shè)計(jì)意圖就是為了用于軟件再分發(fā),所以該程序包會(huì)抑制自動(dòng)重新啟動(dòng),不會(huì)通過用戶界面返回或通知用戶重新啟動(dòng)情況。請(qǐng)確保使用返回注冊(cè)表的信息來執(zhí)行下列操作:確定在運(yùn)行WMFdist.exe之后計(jì)算機(jī)是否需要重新啟動(dòng)。處理需要重新啟動(dòng)的情況,以及需要重新啟動(dòng)時(shí)與最終用戶的通信。下面的示例代碼可在您的安裝例程中用來以安靜模式運(yùn)行再分發(fā)程序包,并在計(jì)算機(jī)必須重新啟動(dòng)時(shí)通知您的安裝例程。日田/MUST

7、ADD:/Youmustaddshlwapi.libtoyourprojectsettings(link)/7日田/#include#include#include#includeusingstd:cout;usingstd:endl;#defineMAX_TIMEOUT_MS30*60*1000#defineTIME_INCREMENT250/PrototypesBOOLGoInstallWMRedist(BOOL);BOOLSystemNeedsReboot(void);voidmain(void)日田GoInstallWMRedist(TRUE);IcoutSetupiscomplete

8、;Iif(SystemNeedsReboot()申由/Writesomecodeheretoensurethatyourapplicationwill891011121314151617181920212223242526272829303132/restartthecomputer,anddelaydllregistrationsandsoon/untilaftertherestart,wherepossible.Forexample,/setaglobalflagforusebytheapplication.coutArestartISrequiredendl;elsecoutAresta

9、rtISNOTrequiredMAXTIMEOUTMS)102申由103TerminateProcess(ProcessInfo.hProcess,EFAIL);104break;105106dwTimePassed+=TIMEINCREMENT;107108109CloseHandle(ProcessInfo.hProcess);110return(TRUE);L113日田/Usedtodeterminewhetherthesystemshouldberestarted118日田/119BOOLSystemNeedsReboot(void)120日田/121日田122BOOLfNeedExi

10、sts=FALSE;123OSVERSIONINFOosvi;125124126GetVersionEx(&osvi);127128if(VERPLATFORMWIN32NT!=osvi.dwPlatformId)129申由130TCHARszIniPathMAXPATH;131132GetWindowsDirectory(szIniPath,133sizeof(szIniPath)/sizeof(TCHAR);134PathAddBackslash(szIniPath);135tcscat(szIniPath,T(wininit.ini);136137if(OxFFFFFFFF!=GetFi

11、leAttributes(szIniPath)138申由139HFILEhFile;140141if(hFile=142lopen(szIniPath,OF_READ|OF_SHARE_DENY_NONE)!143HFILEERROR)144申由osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);D);146147148149150151申由152153154155ger),156157申由158159160161申由162163164165166167168169L_lclose(hFile);elseHKEYhKey=NULL;if(ERROR_S

12、UCCESS=RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T(SystemCurrentControlSetControlSessionMana0,KEY_READ,&hKey)if(ERROR_SUCCESS=RegQueryValueEx(hKey,_T(PendingFileRenameOperations),NULL,NULL,NULL,NULL)fNeedExists=TRUE;RegCloseKey(hKey);return(fNeedExists);再分發(fā)WindowsMediaEncoder9Series軟件當(dāng)您分發(fā)基于WindowsMediaEncode

13、rSDK的應(yīng)用程序時(shí),必須通過在安裝中再分發(fā)WindowsMediaEncoder,或者要求您的用戶自行安裝WindowsMediaEncoder,將WindowsMediaEncoder軟件也包括在內(nèi)。如果您要再分發(fā)WindowsMediaEncoder,則必須在安裝中包括并運(yùn)行WMEncoder.exe安裝文件。Microsoft網(wǎng)站的下載中心中提供有此文件。如果您希望最終用戶自行安裝WindowsMediaEncoder,則可以引導(dǎo)這些用戶訪問此網(wǎng)站。默認(rèn)情況下,WindowsMediaEncoder安裝在C:ProgramFilesWindowsMediaComponentsEncod

14、er目錄中。WMEncoder.exe命令行參數(shù)下面幾項(xiàng)內(nèi)容顯示了WMEncoder.exe常用的命令行參數(shù)。對(duì)于不帶UI的無人參與安裝:wmencoder.exe/Q:A對(duì)于帶有進(jìn)度條的無人參與安裝:wmencoder.exe/Q檢測(cè)WindowsMediaEncoder9Series您可以通過搜索注冊(cè)表的方式,確定所安裝的WindowsMediaEncoder的版本:HKLM,SoftwareMicrosoftWindowsMediaEncoder,Version在該編碼器項(xiàng)下面,如果設(shè)置了Version字符串值,則可以放心地使用該字符串值作為所安裝的WindowsMediaEncoder

15、的版本。您可以使用下列注冊(cè)表項(xiàng)來確定WindowsMediaEncoder安裝目錄的位置:HKLM,SoftwareMicrosoftWindowsMediaEncoder,InstallDir再分發(fā)WindowsMediaPlayer9Series軟件在應(yīng)用程序中檢測(cè)WindowsMediaPlayer您可以通過搜索注冊(cè)表的方式,確定所安裝的WindowsMediaPlayer的版本。HKEY_LOCAL_MACHINESoftwareMicrosoftActiveSetupInstalledComponents對(duì)于WindowsMediaPlayer6.4,請(qǐng)查看該項(xiàng):22d6f312-b

16、0f6-11d0-94ab-0080c74c7e95對(duì)于WindowsMediaPlayer7、WindowsMediaPlayerforWindowsXP或WindowsMediaPlayer9Series,請(qǐng)查看該項(xiàng):6BF52A52-394A-11d3-B153-00C04F79FAA6在上述任一項(xiàng)下面,如果IslnstallecDWORD值設(shè)置為0 x1,則可以放心地使用“Version”字符串值作為所安裝的WindowsMediaPlayer的版本。MPSetup.exe和MPSetupXP.exe命令行參數(shù)下面是幾個(gè)常用的命令行參數(shù)。對(duì)于不帶UI、不需要重新啟動(dòng)或沒有重新啟動(dòng)提示的

17、無人參與安裝:mpsetup.exe/q:A/c:setup_wm.exe/Q:A/R:N/P:#e這是一個(gè)標(biāo)準(zhǔn)的命令行,通常應(yīng)該用于執(zhí)行無人參與安裝。防止媒體庫移植:mpsetup.exe/q:A/R:N/c:setup_wm.exe/NoMigrate/P:#e對(duì)安裝程序包進(jìn)行緩存,用于以后的Windows升級(jí)移植:mpsetup.exe/q:A/R:N/c:setup_wm.exe/P:#e/P:#e指定,在WindowsMediaPlayer安裝過程中應(yīng)該對(duì)WindowsMediaPlayer安裝程序包進(jìn)行緩存。在處理操作系統(tǒng)將來升級(jí)的所有命令行中,通常應(yīng)該使用此參數(shù)。不應(yīng)在命令行中包

18、括/P:#e的唯一一種情況為,您知道目標(biāo)系統(tǒng)永遠(yuǎn)不會(huì)升級(jí)為更高版本的操作系統(tǒng)。例如,如果您正在Windows2000上安裝WindowsMediaPlayer9Series,并且該計(jì)算機(jī)在將來的某一天可能會(huì)升級(jí)為WindowsXP,則必須在命令行中使用/P:#e。如果不使用此參數(shù),則在WindowsXP安裝之后,WindowsMediaPlayer9Series文件會(huì)被WindowsMediaPlayerforWindowsXP的文件所覆蓋。對(duì)于安靜模式:/Q此參數(shù)用于不帶UI的無人參與安裝。取消重新啟動(dòng)提示/R:N此參數(shù)表示永遠(yuǎn)不需要重新啟動(dòng),也不出現(xiàn)提示。如果您忽略此命令,則無論是否已經(jīng)安

19、裝該軟件,播放器都會(huì)在安裝結(jié)束時(shí)提示用戶重新啟動(dòng)計(jì)算機(jī)。創(chuàng)建嵌套的系統(tǒng)還原點(diǎn):/NestedRestore如果您的應(yīng)用程序創(chuàng)建的系統(tǒng)還原點(diǎn)會(huì)將WindowsMediaPlayer還原點(diǎn)嵌套在應(yīng)用程序還原點(diǎn)中,請(qǐng)使用此參數(shù)。不允許創(chuàng)建系統(tǒng)還原點(diǎn)/DisallowSystemRestore此標(biāo)志會(huì)禁止系統(tǒng)還原點(diǎn)的創(chuàng)建。大多數(shù)情況下,對(duì)于一般的軟件再分發(fā)方案都不應(yīng)該使用此標(biāo)志。只有當(dāng)您可以代表最終用戶作出明確選擇,不支持WindowsMediaPlayer9Series文件回滾到該播放器的更早版本時(shí),才應(yīng)該使用此標(biāo)志。此標(biāo)志只應(yīng)在公司部署或者原始設(shè)備制造商(OEM)安裝方案中使用。注意命令行參數(shù)區(qū)分

20、大小寫。取消重新啟動(dòng)提示時(shí),必須檢查InstallResult注冊(cè)表項(xiàng),并處理調(diào)用安裝應(yīng)用程序中的重新啟動(dòng)通知。WindowsMediaPlayer9Series還會(huì)安裝WindowsMediaFormatruntime,因此無需將MediaPlayer9Series分發(fā)程序包和WindowsMediaFormatRuntime分發(fā)程序包同時(shí)包括在一個(gè)軟件再分發(fā)程序包中。例如,如果您在安裝中包括了MPSetup.exe或MPSetupXP.exe,則無需包括WMFdist.exe。檢測(cè)MPSetup.exe和MPSetupXP.exe的安裝狀態(tài)下面的代碼可用于WindowsMediaPlaye

21、r再分發(fā)程序包。安裝狀態(tài)作為HRESULT存儲(chǔ)在下列位置:HKCU,SoftwareMicrosoftMediaPlayerSetup,REG_SZ,valueInstallResultHRESULT值可用于確定安裝是否成功以及是否需要重新啟動(dòng)。下面的C+示例代碼可包含在一個(gè)調(diào)用安裝應(yīng)用程序中。此代碼會(huì)根據(jù)組件再分發(fā)程序包中WindowsMedia安裝寫入的HRESULT值,將fSucess和fRebootNeeded變量設(shè)置為合適的true或false。#include#include/IfNSSREBOOTREQUIREDisundefined,use0 xD2AF9.#ifndefNSS

22、REBOOTREQUIRED#defineNSSREBOOTREQUIRED0 xd2af9#endifintmain(void)10日田11HKEYhKey=NULL;12BOOLfSuccess=FALSE;13BOOLfRebootNeeded=FALSE;1415if(ERROR_SUCCESS=RegOpenKeyExA(16HKEYCURRENTUSER,17SoftwareMicrosoftMediaPlayerSetup180,KEY_QUERY_VALUE,&hKey)20charszResult6421DWORDdwResultsizeof(szResult);2223if

23、(ERROR_SUCCESS=RegQueryValueExA(hKey,InstallResult,NULL,NULL,25(LPBYTE)szResult,&dwResult)27sscanf(szResult,%x,&dwResult);28fSuccessSUCCEEDED(dwResult);3738394041424344白由4546474849505152L291fRebootNeeded=(NS_S_REBOOT_REQUIRED=dwResult);31RegCloseKey(hKey);3435if(fSuccess)36白由printf(SetupSucceeded);i

24、f(fRebootNeeded)printf(ArestartISrequiredn);elseprintf(ArestartISNOTrequiredn);elseprintf(SetupFailed);if(fRebootNeeded)printf(ArestartISrequiredn);elseprintf(ArestartISNOTrequiredn);return0;WindowsMedia編碼解碼器再分發(fā)您可以更新WindowsMediaPlayer7或WindowsMediaPlayerforWindowsXP,以使得這些軟件不必依賴Internet代碼自動(dòng)下載機(jī)制即可支持Wi

25、ndowsMedia9Series編碼解碼器。有一個(gè)用于此目的的編碼解碼器再分發(fā)程序包,名為WM9Codecs.exe,該程序包可用于公司和軟件部署。要在應(yīng)用程序再分發(fā)安裝中使用這個(gè)程序包更新編碼解碼器,請(qǐng)使用下面的命令行將WM9Codecs.exe包括在內(nèi),并運(yùn)行該程序包。WM9Codecsxe/Q:A這樣會(huì)啟動(dòng)不帶UI的無人參與安裝。注意您必須使用WindowsMediaFormatruntime再分發(fā)部分中說明的注冊(cè)表信息,來檢查安裝成功狀態(tài),并確定系統(tǒng)是否需要重新啟動(dòng)來完成安裝。如果在再分發(fā)安裝中包括了WindowsMediaPlayer9Series或WindowsMediaForm

26、atruntime分發(fā)程序包,則無需包括WindowsMediaCodecs安裝程序包。關(guān)于主Interop程序集使用MicrosoftWindows.NET框架嵌入WindowsMediaPlayer控件的過程需要使用WindowsMediaPlayer主interop程序集(PIA)。PIA是一個(gè)獨(dú)特的框架程序集,其中包含了COM組件所實(shí)現(xiàn)的各種類型的類型定義(作為元數(shù)據(jù))。只有類型庫的發(fā)布者才能生成真正的PIA,該P(yáng)IA將成為用于與基礎(chǔ)COM類型進(jìn)行交互的正式類型定義的單元。有關(guān)詳細(xì)信息,請(qǐng)參閱MSDN網(wǎng)站上的主Interop程序集(PIA)。與您的應(yīng)用程序一起再分發(fā)主Interop程序

27、集主Interop程序集(PIA)是做為MicrosoftWindows.NET框架應(yīng)用程序的一部分再分發(fā)給最終用戶的。包含一個(gè)或多個(gè)PIA的應(yīng)用程序的部署與任何基于.NET的應(yīng)用程序一樣,不需要在用戶計(jì)算機(jī)上注冊(cè)每個(gè)相關(guān)的COM類型庫。按照定義,PIA總是由它們的發(fā)布者進(jìn)行簽名,以確保唯一性。按照它們所描述類型的唯一官方定義,您可以希望一些常用的PIA安裝在全局程序集緩存中,即使將這同一個(gè)程序集部署到應(yīng)用程序目錄中也可如此。當(dāng)全局程序集與本地程序集具有相同的供應(yīng)商簽名時(shí),公共語言運(yùn)行庫總是會(huì)將您的應(yīng)用程序指向該全局程序集緩存中的PIA。在這種情況下,您的應(yīng)用程序不會(huì)受到保護(hù),會(huì)受供應(yīng)商發(fā)起的

28、版本更改的影響。最佳方法是始終安裝供應(yīng)商提供的最新版本。然而,當(dāng)您的應(yīng)用程序需要上述保護(hù)時(shí),則可以通過使用類型庫導(dǎo)入程序(Tlbimp.exe)(而不是PIA)來生成自己的interop程序集。注冊(cè)用于應(yīng)用程序開發(fā)的主Interop程序集您必須使用程序集注冊(cè)工具(RegAsm.exe)和全局程序集緩存實(shí)用程序(GacUtil.exe)來注冊(cè)和安裝WindowsMediaPlayerPIA。要注冊(cè)PIA,請(qǐng)?jiān)诿钐崾痉拢I入:regasmassemblyname在此命令中,assemblyname為要注冊(cè)的程序集的文件名。下面的示例會(huì)注冊(cè)wmppia.dllPIA。regasmC:WMSDKWMPSDK9redistwmppia.dllRegasm.exe在與原始類型庫相同的注冊(cè)表項(xiàng)下面添加一個(gè)用于該P(yáng)IA的注冊(cè)表項(xiàng)。注冊(cè)了該P(yáng)IA之后,使用全局程序集緩存實(shí)用程序?qū)⑵浒惭b到全局程序集緩存(G

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論