Windows Embedded Standard開發(fā)初體驗(yàn)(四)
接下來我們就要進(jìn)入創(chuàng)建組件最重要的一環(huán)了,添加文件。為什么說重要,因?yàn)檫@里有一個(gè)大坑,我在Windows Embedded Standard產(chǎn)品組施衛(wèi)娟老師的指導(dǎo)下,花了兩周的時(shí)間才勉強(qiáng)爬出來,可見該坑之深。
在這里我們使用了一個(gè)現(xiàn)成的Demo,SilverlightTV作為我們的目標(biāo)文件。SilverlightTV中包含很多文件和文件夾。我們要做的第一件事,就是將所有文件拷貝到一個(gè)文件夾中。這一點(diǎn)非常重要,因?yàn)榭紤]到效率問題,Windows Embedded Standard組件中的文件只能包括在同一個(gè)文件夾中。
主要提示:如果將包含子目錄的文件夾添加到組件中,組件設(shè)計(jì)器不會(huì)報(bào)錯(cuò),而要等到這個(gè)組件加入到Target Designer時(shí),才會(huì)報(bào)文件找不到的錯(cuò)誤,并且在構(gòu)建好的Image文件中,只會(huì)包括文件夾,而不會(huì)包括其中的文件。
不過,新的問題就來了,如果我的文件結(jié)構(gòu)是固定的,并且有相互的依賴關(guān)系,把所有文件都放到一個(gè)文件夾后,程序無法正常運(yùn)行該怎么辦呢?我們自然有辦法,不過現(xiàn)在,還是趕緊將所有文件放在一個(gè)文件夾中吧,這個(gè)文件夾就是添加Repositories時(shí)指定的Source Path文件夾。不過千萬記清文件原來所在的文件夾,否則下一步就麻煩了。
做完這步之后,回到Component Designer中,在Files節(jié)點(diǎn)單擊右鍵,在菜單中選擇Add – Files in Folder,在稍后彈出的對(duì)話框中,選擇我們放置源文件的文件夾。經(jīng)過下面的處理過程之后,文件夾中所有的文件都被加入到組件中了
不過問題是,所有的文件還被放置在同一個(gè)目錄中,無法正常執(zhí)行。這時(shí),我們要通過一個(gè)比較繁瑣的過程來解決這個(gè)問題——修改文件的目的文件夾。在右側(cè)的文件列表中,選中某一個(gè)文件,雙擊,打開文件編輯對(duì)話框:
我們打開的是一個(gè)wmv文件,我們只需要修改Destination中的目錄結(jié)構(gòu),%24%是一個(gè)轉(zhuǎn)義字符,表示C盤,我們不要去動(dòng)它。根據(jù)我們文件的原始位置填寫目的文件的所在目錄就可以了。這個(gè)工作要花費(fèi)一段時(shí)間,需要點(diǎn)耐心。
接下來,我們要添加組件的Group Memberships,表示組件在組件目錄樹中所處的位置。我們?cè)凇癎roup Memberships”節(jié)點(diǎn)上右鍵選擇“Add Group Membership”命令。在彈出的對(duì)話框中,選擇SoftwareàSystemàUser InterfaceàShells,然后選擇Shell即可。點(diǎn)擊OK,關(guān)閉對(duì)話框。
接下來為組件添加依賴關(guān)系。依賴關(guān)系表明該組件依賴于那些組件,當(dāng)我們添加了該組件到Target Image中時(shí),在依賴檢查時(shí),會(huì)將其所依賴的組件也添加到Image中。
我們選擇“Component or Group Dependency”,右鍵菜單中“Add”-“Component Dependency”,會(huì)彈出添加組件依賴對(duì)話框。
我們?cè)凇癈omponent dependency source”選擇Database,即選擇組件數(shù)據(jù)庫中的組件。然后找到SoftwareàSystemàNetworking Communicationsà ApplicationsàInternet Explorer – Hotfix Q321232,并且確認(rèn)My Component下選擇的是“Depends on the selected component”,然后點(diǎn)擊Apply按鈕,添加依賴關(guān)系。
這時(shí)對(duì)話框不會(huì)關(guān)閉,所以我們還需要添加第二個(gè)依賴組件,就是大名鼎鼎的
好了,到這里,我們的組件就基本完成了,哦,還忘了件事,添加注冊(cè)表。不過請(qǐng)大家注意的是,并不是每個(gè)Silverlight組件都需要添加注冊(cè)表項(xiàng),是因?yàn)镾ilverlightTV這個(gè)組件中調(diào)用了ActiveX,IE中會(huì)有安全限制,所以我們才通過修改注冊(cè)表的方式來規(guī)避這個(gè)問題。關(guān)于IE安全限制的問題,我們后邊會(huì)專門說明,在這里大家只要了解如何為組件添加注冊(cè)表項(xiàng)就可以了。
在Component Designer中選擇Registry Data,右鍵菜單中選擇添加注冊(cè)表項(xiàng)。我們可以點(diǎn)擊Key name后邊的Browse按鈕,在注冊(cè)表中定位要添加的項(xiàng)。我們要添加的項(xiàng)為:
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_LOCALMACHINE_LOCKDOWN
中的“iexplore.exe”項(xiàng),值為DWORD,設(shè)置為0。
大家一看就知道這個(gè)選項(xiàng)是與IE有關(guān)的,至于什么關(guān)系,我們先賣個(gè)關(guān)子,稍后再說。先點(diǎn)擊OK,關(guān)閉注冊(cè)表編輯對(duì)話框。
好了,到這里我們支持Silverlight的Shell組件終于編輯完成了。好的,趕緊保存一下吧。不過,我們?cè)趺丛赥arget Designer里使用這個(gè)組件呢?
這就要看下一節(jié)的了……
評(píng)論