啟用鎖定文件擴(kuò)展名的下載IIS(Internet 信息服務(wù))會(huì)保護(hù)某些文件類(lèi)型,例如 .config 文件和 .mdb 文件。如果應(yīng)用程序有鎖定的文件,請(qǐng)執(zhí)行以下操作啟用對(duì)此類(lèi)文件的下載:
您將看到一個(gè)應(yīng)用程序映射列表。刪除 .config 擴(kuò)展名的映射以啟用 .config 文件下載。對(duì)此列表中希望作為應(yīng)用程序一部分下載的所有其他擴(kuò)展名重復(fù)此操作。 出于安全原因,有些 Web 服務(wù)器的配置會(huì)阻止不常用于 Web 內(nèi)容的文件。例如,具有以下擴(kuò)展名的文件可能會(huì)被阻止:.dll、.config、.mdf?;?Windows 的應(yīng)用程序通常包含帶有其中一些擴(kuò)展名的文件。如果用戶(hù)嘗試運(yùn)行的 ClickOnce 應(yīng)用程序要訪問(wèn) Web 服務(wù)器上被阻止的文件,將產(chǎn)生一個(gè)錯(cuò)誤。無(wú)需取消對(duì)所有文件擴(kuò)展名的阻止,默認(rèn)情況下,每個(gè)應(yīng)用程序文件都使用“.deploy”文件擴(kuò)展名發(fā)布。如果使用此選項(xiàng),Web 服務(wù)器只需配置為允許以下三種文件擴(kuò)展名即可:
但是,可以禁用此選項(xiàng),方法是清除“發(fā)布選項(xiàng)”對(duì)話框上的“使用‘deploy’文件擴(kuò)展名”選項(xiàng),這時(shí)必須配置 Web 服務(wù)器以允許應(yīng)用程序中使用的所有文件擴(kuò)展名。 有時(shí)您必須配置 .manifest、.application 和 .deploy,例如在使用未安裝 .NET Framework 的 IIS 的情況下,或在使用其他 Web 服務(wù)器(例如,Apache)的情況下。 配置過(guò)期設(shè)置通過(guò) URL 啟動(dòng)應(yīng)用程序時(shí),Internet Explorer 執(zhí)行 .application 文件的下載。因此,所有通知瀏覽器緩存文件的過(guò)期設(shè)置都將有效。客戶(hù)端會(huì)因此而不檢測(cè)新的更新,而是使用 IE 緩存中的 .application。若要確??蛻?hù)端在每當(dāng)更新可用時(shí)都立即檢測(cè)更新,請(qǐng)啟用 IIS 中的“立即過(guò)期”選項(xiàng)。 在 IIS 中執(zhí)行此操作:
不支持 FTP 協(xié)議ClickOnce 支持從任何 HTTP 1.1 Web 服務(wù)器或文件服務(wù)器上安裝應(yīng)用程序。FTP 協(xié)議不受支持??梢允褂?ftp:// 協(xié)議發(fā)布應(yīng)用程序,但必須使用 http://、https:// 或 file:// 協(xié)議執(zhí)行安裝。 正確配置服務(wù)器使用 ClickOnce 時(shí)的一個(gè)最常見(jiàn)的問(wèn)題就是 ClickOnce 因配置問(wèn)題而無(wú)法從網(wǎng)絡(luò)服務(wù)器下載文件。如果在 ClickOnce 安裝過(guò)程中遇到下載文件的問(wèn)題,請(qǐng)嘗試使用 Internet Explorer 下載相同的文件。這樣將把問(wèn)題范圍縮小到 ClickOnce 問(wèn)題,而不是普通的服務(wù)器/網(wǎng)絡(luò)問(wèn)題。 需要管理員特權(quán)如果使用 HTTP 發(fā)布,則您必須具備目標(biāo)服務(wù)器上的管理員特權(quán)(IIS 需要此特權(quán)級(jí)別)。如果不使用 HTTP 發(fā)布,則只需具備目標(biāo)路徑上的寫(xiě)權(quán)限。 必須啟用匿名訪問(wèn)向關(guān)閉了“匿名訪問(wèn)”的遠(yuǎn)程服務(wù)器發(fā)布時(shí),您將收到下面的警告: "The files could not be downloaded from http://<remoteserver>/<myapplication>/. The remote server returned an error: (401) Unathorized." 若要解決此問(wèn)題,請(qǐng)?jiān)?Windows 資源管理器中右擊“我的電腦”,然后選擇“管理”。在“計(jì)算機(jī)管理”對(duì)話框中,依次打開(kāi)“服務(wù)和應(yīng)用程序”節(jié)點(diǎn)、“Internet 信息服務(wù)”、“網(wǎng)站”,然后右擊“默認(rèn)網(wǎng)站”。在“默認(rèn)網(wǎng)站屬性”對(duì)話框中,單擊“目錄安全性”選項(xiàng)卡,然后單擊“編輯”按鈕。在“身份驗(yàn)證方法”對(duì)話框中,選擇“匿名訪問(wèn)”復(fù)選框。 Windows XP SP2:Windows 防火墻默認(rèn)情況下,Windows XP SP2 啟用 Windows 防火墻。如果在安裝有 Windows XP 的計(jì)算機(jī)上開(kāi)發(fā)應(yīng)用程序,仍能從本地 IIS 服務(wù)器發(fā)布和運(yùn)行 ClickOnce 應(yīng)用程序。但是,如果不打開(kāi) Windows 防火墻,則無(wú)法從其他計(jì)算機(jī)訪問(wèn)該 IIS 服務(wù)器。若要管理 Windows 防火墻,請(qǐng)從“控制面板”中選擇“Windows 防火墻”。 Windows Server 2003:?jiǎn)⒂?FrontPage 服務(wù)器擴(kuò)展使用 HTTP 將應(yīng)用程序發(fā)布到 Windows Web 服務(wù)器需要 FrontPage 服務(wù)器擴(kuò)展 (FPSE)。 默認(rèn)情況下,Windows Server 2003 不安裝 FPSE。如果希望使用 Visual Studio 通過(guò)具有 FPSE 的 HTTP 將應(yīng)用程序發(fā)布到 Windows Server 2003 Web 服務(wù)器,必須先安裝 FPSE。可以使用 Windows Server 2003 中的“管理您的服務(wù)器”管理工具完成此工作。 MIME 類(lèi)型映射在 HTTP 上發(fā)布時(shí),.application 文件的 MIME 類(lèi)型應(yīng)為“application/x-ms-application”。如果服務(wù)器上安裝有 .NET Framework 2.0,該類(lèi)型將自動(dòng)設(shè)置。如果沒(méi)有安裝,則需要為 ClickOnce 應(yīng)用程序 vroot(或整個(gè)服務(wù)器)創(chuàng)建 MIME 類(lèi)型關(guān)聯(lián)。 在 IIS 中執(zhí)行此操作:
Windows Server 2003:鎖定的 MIME 類(lèi)型Windows Server 2003 上的 IIS 會(huì)鎖定除某些已知類(lèi)型(例如 .htm、.html、.txt 等)以外的所有文件類(lèi)型。要使用此服務(wù)器部署 ClickOnce 應(yīng)用程序,需要更改 IIS 設(shè)置以允許下載 .application、.manifest 以及應(yīng)用程序使用的所有其他自定義文件類(lèi)型的文件。 在 IIS 中執(zhí)行此操作:
<script type=text/Javascript> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl08b2d8d8b,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl08img,"; </script>
疑難解答指南使用 ClickOnce 錯(cuò)誤日志
手動(dòng)更改清單或應(yīng)用程序時(shí)的注意事項(xiàng)Visual Studio 發(fā)布負(fù)責(zé)設(shè)置應(yīng)用程序和清單。但是,如果在 Visual Studio 以外更新部署(例如使用 MAGE),則需注意一些問(wèn)題:
使用部署提供程序的注意事項(xiàng)這里介紹當(dāng)您在客戶(hù)端發(fā)現(xiàn) ClickOnce 應(yīng)用程序出現(xiàn)意外行為時(shí)應(yīng)注意的問(wèn)題。ClickOnce 部署清單具有一個(gè) deploymentProvider 屬性,該屬性指向安裝應(yīng)用程序和為應(yīng)用程序提供服務(wù)的源位置的完整路徑。 在部署清單中查找下面一行: <deploymentProvider codebase="http://myserver/myapp.application" /> 這行內(nèi)容是在創(chuàng)建 ClickOnce 應(yīng)用程序時(shí)設(shè)置的,對(duì)于“安裝的”應(yīng)用程序,這是必需的設(shè)置。該設(shè)置中的位置是一個(gè)標(biāo)準(zhǔn)位置,ClickOnce 安裝程序從該位置安裝應(yīng)用程序和查找更新。所有應(yīng)用程序文件都將從相對(duì)于此路徑的位置安裝。 因此,如果使用 xcopy 命令將 ClickOnce 應(yīng)用程序復(fù)制到不同位置,但不更改 deploymentProvider 屬性,則嘗試下載應(yīng)用程序時(shí) ClickOnce 仍將引用原始位置。 如果希望移動(dòng)或復(fù)制應(yīng)用程序,則必須也更新 deploymentProvider 路徑,這樣客戶(hù)端才能確實(shí)從新位置安裝。對(duì)“安裝的”應(yīng)用程序來(lái)說(shuō)這是個(gè)普遍問(wèn)題。對(duì)于始終通過(guò)原始 URL 啟動(dòng)的聯(lián)機(jī)應(yīng)用程序,deploymentProvider 為可選設(shè)置。如果設(shè)置了 deploymentProvider,則使用該屬性,否則將使用用于激活應(yīng)用程序的 URL 作為基 URL 下載應(yīng)用程序文件。 請(qǐng)記?。好看胃虑鍐螘r(shí),必須再次對(duì)它簽名。 <script type=text/Javascript> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl1090e47d6,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl10img,"; </script>
常見(jiàn)問(wèn)題應(yīng)用程序啟動(dòng)和更新問(wèn)題問(wèn)題:瀏覽至一個(gè) .application 文件時(shí)無(wú)任何反應(yīng),或者 XML 呈現(xiàn)在 IE 中,或者出現(xiàn)“運(yùn)行/另存為”對(duì)話框解決方法:很可能是因?yàn)?MIME 類(lèi)型未在服務(wù)器或客戶(hù)端上正確注冊(cè)。 首先進(jìn)行檢查,以確保服務(wù)器配置為將 .application 擴(kuò)展名與 MIME 類(lèi)型“application/x-ms-application”相關(guān)聯(lián)(請(qǐng)參見(jiàn)上面的“服務(wù)器配置”了解詳細(xì)信息)。如果服務(wù)器配置正確,則檢查以確保計(jì)算機(jī)上安裝了 .NET Framework 2.0。如果已安裝 dnprdnlong 但仍出現(xiàn)該問(wèn)題,請(qǐng)嘗試卸載并重新安裝 Framework,以在客戶(hù)端重新注冊(cè) MIME 類(lèi)型。 問(wèn)題:錯(cuò)誤對(duì)話框顯示“無(wú)法檢索應(yīng)用程序。部署中缺少文件”或“應(yīng)用程序下載中斷,請(qǐng)檢查網(wǎng)絡(luò)錯(cuò)誤并稍后再試”解決方法:這表示無(wú)法下載 ClickOnce 清單所引用的一個(gè)或多個(gè)文件。調(diào)試此問(wèn)題最簡(jiǎn)單的方法是嘗試下載 ClickOnce 指出其無(wú)法下載的 URL??赡艿脑蛉缦拢?/p>
問(wèn)題:安裝具有 .config 文件的 ClickOnce 應(yīng)用程序時(shí)發(fā)生下載錯(cuò)誤基于 Visual Basic Windows 的應(yīng)用程序默認(rèn)包含一個(gè) app.config 文件。當(dāng)用戶(hù)嘗試從安裝有 Windows Server 2003 的 Web 服務(wù)器安裝時(shí)將出現(xiàn)問(wèn)題,原因是該操作系統(tǒng)會(huì)出于安全原因而阻止安裝 .config 文件。要允許安裝 .config 文件,請(qǐng)單擊“發(fā)布選項(xiàng)”對(duì)話框中的“使用‘.deploy’文件擴(kuò)展名”。 還需要相應(yīng)地設(shè)置 MIME 類(lèi)型。如果在使用 IIS,請(qǐng)?jiān)?Windows 資源管理器中右擊“我的電腦”,再選擇“管理”。依次打開(kāi)“服務(wù)和應(yīng)用程序”、“Internet 信息服務(wù)”,再右擊“網(wǎng)站”,然后選擇“屬性”。 單擊標(biāo)簽為“MIME 類(lèi)型”的按鈕。在“MIME 類(lèi)型”對(duì)話框中,為 .application、.manifest 和 .deploy 文件添加 MIME 類(lèi)型。 有關(guān)更多信息,請(qǐng)參見(jiàn)上面的“服務(wù)器配置”部分中的“啟用鎖定文件擴(kuò)展名的下載”。 問(wèn)題:錯(cuò)誤信息“應(yīng)用程序格式不正確”;日志文件包含“XML 簽名無(wú)效”解決方法:確保更新了清單文件并再次對(duì)它簽名。使用 Visual Studio 重新發(fā)布應(yīng)用程序,或使用 Mage 再次對(duì)該應(yīng)用程序進(jìn)行簽名。 問(wèn)題:安全警告“應(yīng)用程序已被阻止,因?yàn)樗鼤?huì)對(duì)計(jì)算機(jī)造成很高的安全風(fēng)險(xiǎn)”解決方法:如果 Internet 上未簽名的應(yīng)用程序請(qǐng)求升級(jí)的信任,通常會(huì)出現(xiàn)此對(duì)話框。若要允許安裝和運(yùn)行此應(yīng)用程序,請(qǐng)將該 URL 添加到受信任站點(diǎn)列表。可以在 Internet Explorer 中使用“Internet 選項(xiàng)”對(duì)話框中的“安全”選項(xiàng)卡完成此操作。 問(wèn)題:我在服務(wù)器上更新了應(yīng)用程序,但客戶(hù)端不下載更新解決方法:可能存在以下原因之一
問(wèn)題:更新期間遇到錯(cuò)誤,日志項(xiàng)記錄“部署中的引用與應(yīng)用程序清單中定義的標(biāo)識(shí)不匹配”解決方法:發(fā)生問(wèn)題的原因可能是 ClickOnce 當(dāng)前使用的是 Internet Explorer 緩存的較舊版本的部署清單,而該版本與服務(wù)器上的最新應(yīng)用程序清單不匹配。為避免此問(wèn)題,建議將服務(wù)器 vroot(或部署清單)上的 IIS 設(shè)置更改為立即過(guò)期,此設(shè)置會(huì)強(qiáng)制在每次激活時(shí)檢查服務(wù)器。若要在 inetmgr 中進(jìn)行此操作,請(qǐng)選擇 vroot“屬性”頁(yè)上的“HTTP 標(biāo)頭”選項(xiàng)卡,然后選中“啟用內(nèi)容過(guò)期”框,并設(shè)置為“立即過(guò)期”。 或者,可以先重新啟動(dòng) Internet Explorer 或清除 Internet Explorer 的“Temporary Internet Files”文件夾,然后再次運(yùn)行該應(yīng)用程序,這將導(dǎo)致一次服務(wù)器重新同步。 問(wèn)題:首次從本地磁盤(pán)(或 CD-ROM)激活成功,但之后從“開(kāi)始”菜單激活失敗解決方法:ClickOnce 使用部署提供程序 URL 獲取應(yīng)用程序的更新。請(qǐng)檢查以確保該 URL 指向的位置正確。(有關(guān)更多信息,請(qǐng)參見(jiàn)上面的“部署提供程序”。) 問(wèn)題:錯(cuò)誤“無(wú)法終結(jié)應(yīng)用程序”解決方法:此錯(cuò)誤信息通常表示將該應(yīng)用程序安裝到 ClickOnce 存儲(chǔ)區(qū)時(shí)出錯(cuò)。要么是應(yīng)用程序出錯(cuò),要么是存儲(chǔ)區(qū)損壞。日志文件對(duì)出錯(cuò)位置可能會(huì)有更好的指示。 要檢查的內(nèi)容:
問(wèn)題:應(yīng)用程序配置文件中的 PrivatePath 設(shè)置不起作用解決方法:要使用 PrivatePath(合成探測(cè)路徑),應(yīng)用程序需要獲得完全信任權(quán)限。請(qǐng)嘗試將應(yīng)用程序清單更改為請(qǐng)求完全信任,然后重試。 問(wèn)題:卸載期間出現(xiàn)對(duì)話框“未能卸載應(yīng)用程序”解決方法:這通常表示應(yīng)用程序已經(jīng)刪除或存儲(chǔ)區(qū)已損壞。單擊“確定”后,“添加/刪除程序”項(xiàng)將被刪除。 問(wèn)題:安裝期間出現(xiàn)對(duì)話框,提示沒(méi)有安裝平臺(tái)依賴(lài)項(xiàng)解決方法:GAC(全局程序集緩存)中缺少應(yīng)用程序運(yùn)行所需的一個(gè)必備項(xiàng)。 使用 Visual Studio 發(fā)布問(wèn)題:在 Visual Studio 中發(fā)布時(shí)失敗請(qǐng)確保您具備面向目標(biāo)服務(wù)器的發(fā)布權(quán)限。例如,如果您作為普通用戶(hù)而不是管理員登錄到終端服務(wù)器計(jì)算機(jī),則您可能沒(méi)有權(quán)限發(fā)布到本地 Web 服務(wù)器。 如果使用 URL 發(fā)布,請(qǐng)確保目標(biāo)計(jì)算機(jī)上啟用了 FrontPage 服務(wù)器擴(kuò)展。 使用 Mage問(wèn)題:我嘗試使用證書(shū)存儲(chǔ)區(qū)中的證書(shū)進(jìn)行簽名,但收到一個(gè)空白消息框您需要在“簽名”對(duì)話框中執(zhí)行以下操作:
問(wèn)題:?jiǎn)螕?#8220;不簽名”按鈕時(shí)導(dǎo)致異常這是一個(gè)已知 bug。所有 ClickOnce 清單都需要進(jìn)行簽名。只需選擇其中一個(gè)簽名選項(xiàng),然后單擊“確定”即可。 PS:上面的錯(cuò)誤及解決方案是我轉(zhuǎn)載的,沒(méi)有嘗試,大家遇到并有好的解決方法,希望能貼出來(lái)共享! |
|
|