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