Clickonce部署使用過程中的錯誤

來源:互聯網
上載者:User
Clickonce部署使用過程中的錯誤 啟用鎖定副檔名的下載

IIS(Internet 資訊服務)會保護某些檔案類型,例如 .config 檔案和 .mdb 檔案。如果應用程式有鎖定的檔案,請執行以下操作啟用對此類檔案的下載:

在 inetmgr 中開啟 vroot 的“屬性”頁。

在“虛擬目錄”選項卡上單擊“配置”。

您將看到一個應用程式對應列表。刪除 .config 副檔名的映射以啟用 .config 檔案下載。對此列表中希望作為應用程式一部分下載的所有其他副檔名重複此操作。

出於安全原因,有些 Web 服務器的配置會阻止不常用於 Web 內容的檔案。例如,具有以下副檔名的檔案可能會被阻止:.dll、.config、.mdf。基於 Windows 的應用程式通常包含帶有其中一些副檔名的檔案。如果使用者嘗試啟動並執行 ClickOnce 應用程式要訪問 Web 服務器上被阻止的檔案,將產生一個錯誤。無需取消對所有副檔名的阻止,預設情況下,每個應用程式檔案都使用“.deploy”副檔名發布。如果使用此選項,Web 服務器只需配置為允許以下三種副檔名即可:

.application

.manifest

.deploy

但是,可以禁用此選項,方法是清除“發布選項”對話方塊上的“使用‘deploy’副檔名”選項,這時必須配置 Web 服務器以允許應用程式中使用的所有副檔名。

有時您必須配置 .manifest、.application 和 .deploy,例如在使用未安裝 .NET Framework 的 IIS 的情況下,或在使用其他 Web 服務器(例如,Apache)的情況下。 配置到期設定

通過 URL 啟動應用程式時,Internet Explorer 執行 .application 檔案的下載。因此,所有通知瀏覽器快取檔案的到期設定都將有效。用戶端會因此而不檢測新的更新,而是使用 IE 緩衝中的 .application。若要確保用戶端在每當更新可用時都立即檢測更新,請啟用 IIS 中的“立即到期”選項。

在 IIS 中執行此操作:

運行 inetmgr 並開啟 vroot(或整個伺服器)的“屬性”頁。

單擊“HTTP 標題”選項卡。

單擊“啟用內容到期”。

單擊“立即到期”。

重新啟動 IIS。 不支援 FTP 協議

ClickOnce 支援從任何 HTTP 1.1 Web 服務器或檔案伺服器上安裝應用程式。FTP 協議不受支援。可以使用 ftp:// 協議發布應用程式,但必須使用 http://、https:// 或 file:// 協議執行安裝。 正確設定管理員

使用 ClickOnce 時的一個最常見的問題就是 ClickOnce 因配置問題而無法從網路伺服器下載檔案。如果在 ClickOnce 安裝過程中遇到下載檔案的問題,請嘗試使用 Internet Explorer 下載相同的檔案。這樣將把問題範圍縮小到 ClickOnce 問題,而不是普通的伺服器/網路問題。 需要管理員特權

如果使用 HTTP 發布,則您必須具備目標伺服器上的管理員特權(IIS 需要此特權層級)。如果不使用 HTTP 發布,則只需具備目標路徑上的寫入權限。 必須啟用匿名訪問

向關閉了“匿名訪問”的遠程伺服器發布時,您將收到下面的警告: "The files could not be downloaded from http://<remoteserver>/<myapplication>/. The remote server returned an error: (401) Unathorized."

若要解決此問題,請在 Windows 資源管理員中右擊“我的電腦”,然後選擇“管理”。在“電腦管理”對話方塊中,依次開啟“服務和應用程式”節點、“Internet 資訊服務”、“網站”,然後右擊“預設網站”。在“預設網站屬性”對話方塊中,單擊“目錄安全性”選項卡,然後單擊“編輯”按鈕。在“驗證方法”對話方塊中,選擇“匿名訪問”複選框。 Windows XP SP2:Windows 防火牆

預設情況下,Windows XP SP2 啟用 Windows 防火牆。如果在安裝有 Windows XP 的電腦上開發應用程式,仍能從本地 IIS 伺服器發布和運行 ClickOnce 應用程式。但是,如果不開啟 Windows 防火牆,則無法從其他電腦訪問該 IIS 伺服器。若要管理 Windows 防火牆,請從“控制台”中選擇“Windows 防火牆”。 Windows Server 2003:啟用 FrontPage 伺服器擴充

使用 HTTP 將應用程式發布到 Windows Web 服務器需要 FrontPage 伺服器擴充 (FPSE)。

預設情況下,Windows Server 2003 不安裝 FPSE。如果希望使用 Visual Studio 通過具有 FPSE 的 HTTP 將應用程式發布到 Windows Server 2003 Web 服務器,必須先安裝 FPSE。可以使用 Windows Server 2003 中的“管理您的伺服器”管理工具完成此工作。 MIME 類型映射

在 HTTP 上發布時,.application 檔案的 MIME 類型應為“application/x-ms-application”。如果伺服器上安裝有 .NET Framework 2.0,該類型將自動化佈建。如果沒有安裝,則需要為 ClickOnce 應用程式 vroot(或整個伺服器)建立 MIME 類型關聯。

在 IIS 中執行此操作:

運行 inetmgr 並開啟 vroot(或整個伺服器)的“屬性”頁。

單擊“HTTP 標題”選項卡。

單擊“Mime 映射”部分中的“檔案類型”按鈕。

單擊“建立類型”添加一個新類型。在“相關副檔名”中鍵入 application;在“內容類型 (MIME)”中鍵入 application/x-ms-application

重新啟動 IIS。 Windows Server 2003:鎖定的 MIME 類型

Windows Server 2003 上的 IIS 會鎖定除某些已知類型(例如 .htm、.html、.txt 等)以外的所有檔案類型。要使用此伺服器部署 ClickOnce 應用程式,需要更改 IIS 設定以允許下載 .application、.manifest 以及應用程式使用的所有其他自訂檔案類型的檔案。

在 IIS 中執行此操作:

運行 inetmgr 並開啟該電腦節點的“屬性”頁。

單擊“MIME 類型”按鈕。

單擊“建立”按鈕,然後添加新的副檔名和必要的 MIME 類型。

對於 .application 和 .manifest 副檔名,MIME 類型應為“application/x-ms-application”。對於其他檔案類型,MIME 類型應為“application/octet-stream”。

如果建立帶有副檔名“*”且 MIME 類型為“application/octet-stream”的 MIME 類型,將允許下載未阻止的檔案類型的檔案。(但是不能下載阻止的檔案類型,例如 .aspx 和 .asmx)。

重新啟動 IIS。 <script type=text/Javascript> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl08b2d8d8b,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl08img,"; </script> 疑難解答指南
使用 ClickOnce 錯誤記錄檔

發生 ClickOnce 錯誤時,通常會顯示一個帶有“詳細資料”按鈕的錯誤對話方塊。單擊此按鈕將開啟該應用程式的 ClickOnce 記錄檔。請在此記錄檔中尋找特定錯誤資訊,該資訊將指出何處出錯。如果其中的資訊不足以協助診斷和解決問題,請參考本疑難解答指南中的以下內容。

ClickOnce 為每個應用程式維護一個記錄檔。該檔案儲存體在 wininet 緩衝中,因此適用於自動清理機制。

指定自訂日誌位置:要使 ClickOnce 將日誌寫入到特定位置,請將登錄機碼 [HKCU\Software\Microsoft\Windows\CurrentVersion\Deployment] "LogFilePath" (STRING) 設定為一個檔案,例如“c:\logs\ClickOnceLog.txt”。確保電腦上存在此目錄 (c:\logs)。所有應用程式的全部 ClickOnce 日誌訊息都將寫入此檔案。 手動更改清單或應用程式時的注意事項

Visual Studio 發布負責設定應用程式和清單。但是,如果在 Visual Studio 以外更新部署(例如使用 MAGE),則需注意一些問題:

如果更新應用程式中的檔案,則必須更新應用程式資訊清單中對該檔案的引用,因為該檔案將更改。

如果以任何方式更新應用程式資訊清單,則必須在部署資訊清單中更新應用程式資訊清單引用。當使用 MageUI 在部署資訊清單中更新應用程式資訊清單引用時,請確保基本代碼指向您的應用程式資訊清單。MageUI 始終假定應用程式資訊清單是一個帶有版本的子目錄,而這一假定不一定總是正確的。

如果以任何方式更新清單,則必須再次對它簽名。 使用部署提供者的注意事項

這裡介紹當您在用戶端發現 ClickOnce 應用程式出現意外行為時應注意的問題。ClickOnce 部署資訊清單具有一個 deploymentProvider 屬性,該屬性指向安裝應用程式和為應用程式提供服務的源位置的完整路徑。

在部署資訊清單中尋找下面一行: <deploymentProvider codebase="http://myserver/myapp.application" />

這行內容是在建立 ClickOnce 應用程式時設定的,對於“安裝的”應用程式,這是必需的設定。該設定中的位置是一個標準位置,ClickOnce 安裝程式從該位置安裝應用程式和尋找更新。所有應用程式檔案都將從相對於此路徑的位置安裝。

因此,如果使用 xcopy 命令將 ClickOnce 應用程式複製到不同位置,但不更改 deploymentProvider 屬性,則嘗試下載應用程式時 ClickOnce 仍將引用原始位置。

如果希望移動或複製應用程式,則必須也更新 deploymentProvider 路徑,這樣用戶端才能確實從新位置安裝。對“安裝的”應用程式來說這是個普遍問題。對於始終通過原始 URL 啟動的聯機應用程式,deploymentProvider 為可選設定。如果設定了 deploymentProvider,則使用該屬性,否則將使用用於啟用應用程式的 URL 作為基底 URL 下載應用程式檔案。

請記住:每次更新清單時,必須再次對它簽名。 <script type=text/Javascript> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl1090e47d6,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl10img,"; </script> 常見問題
應用程式啟動和更新問題問題:瀏覽至一個 .application 檔案時無任何反應,或者 XML 呈現在 IE 中,或者出現“運行/另存新檔”對話方塊

解決方案:很可能是因為 MIME 類型未在伺服器或用戶端上正確註冊。

首先進行檢查,以確保伺服器配置為將 .application 副檔名與 MIME 類型“application/x-ms-application”相關聯(請參見上面的“伺服器配置”瞭解詳細資料)。如果伺服器配置正確,則檢查以確保電腦上安裝了 .NET Framework 2.0。如果已安裝 dnprdnlong 但仍出現該問題,請嘗試卸載並重新安裝 Framework,以在用戶端重新註冊 MIME 類型。 問題:錯誤對話方塊顯示“無法檢索應用程式。部署中缺少檔案”或“應用程式下載中斷,請檢查網路錯誤並稍後再試”

解決方案:這表示無法下載 ClickOnce 清單所引用的一個或多個檔案。調試此問題最簡單的方法是嘗試下載 ClickOnce 指出其無法下載的 URL。可能的原因如下:

如果記錄檔顯示“(403) Forbidden”或“(404) Not found”,請檢查以確保 Web 服務器配置為不阻止此檔案的下載(請參見上面的“伺服器配置”部分)。

如果伺服器阻止了 .config 檔案,請參見下面的“問題:安裝具有 .config 檔案的 ClickOnce 應用程式時發生下載錯誤”。

請檢查是否由於部署資訊清單中的 deploymentProvider URL 指向的位置不是用於啟用應用程式的 URL 而導致了此問題(有關更多資訊,請參見上面的“使用部署提供者的注意事項”)。

請檢查伺服器以確保所有檔案都存在;ClickOnce 日誌會指出找不到的檔案。

檢查是否存在網路連接問題;如果下載期間用戶端電腦離線,您將收到此訊息。 問題:安裝具有 .config 檔案的 ClickOnce 應用程式時發生下載錯誤

基於 Visual Basic Windows 的應用程式預設包含一個 app.config 檔案。當使用者嘗試從安裝有 Windows Server 2003 的 Web 服務器安裝時將出現問題,原因是該作業系統會出於安全原因而阻止安裝 .config 檔案。要允許安裝 .config 檔案,請單擊“發布選項”對話方塊中的“使用‘.deploy’副檔名”。

還需要相應地設定 MIME 類型。如果在使用 IIS,請在 Windows 資源管理員中右擊“我的電腦”,再選擇“管理”。依次開啟“服務和應用程式”、“Internet 資訊服務”,再右擊“網站”,然後選擇“屬性”。

單擊標籤為“MIME 類型”的按鈕。在“MIME 類型”對話方塊中,為 .application、.manifest 和 .deploy 檔案添加 MIME 類型。

有關更多資訊,請參見上面的“伺服器配置”部分中的“啟用鎖定副檔名的下載”。 問題:錯誤資訊“應用程式格式不正確”;記錄檔包含“XML 簽名無效”

解決方案:確保更新了資訊清單檔並再次對它簽名。使用 Visual Studio 重新發布應用程式,或使用 Mage 再次對該應用程式進行簽名。 問題:安全警告“應用程式已被阻止,因為它會對電腦造成很高的安全風險”

解決方案:如果 Internet 上未簽名的應用程式請求升級的信任,通常會出現此對話方塊。若要允許安裝和運行此應用程式,請將該 URL 添加到受信任網站列表。可以在 Internet Explorer 中使用“Internet 選項”對話方塊中的“安全”選項卡完成此操作。 問題:我在伺服器上更新了應用程式,但用戶端不下載更新

解決方案:可能存在以下原因之一

請檢查部署資訊清單中的 deploymentProvider URL。您是否確定更新內容所在的位置與 deploymentProvider 指向的位置相同。(有關更多資訊,請參見上面的“使用部署提供者的注意事項”。)

請檢查部署資訊清單中的更新間隔。如果設定的間隔為階段性間隔(例如每六小時一次),ClickOnce 會一直等到此間隔過後才檢查更新。可以更改清單,使之在每次應用程式啟動時檢查更新。在開發時可以使用這一選項方便地驗證是否正在安裝更新,但這會減慢應用程式的啟用速度。

嘗試從“開始”菜單重新啟動應用程式。ClickOnce 可能已在後台檢測到更新,但將在下次啟用時提示您安裝。 問題:更新期間遇到錯誤,日誌項記錄“部署中的引用與應用程式資訊清單中定義的標識不匹配”

解決方案:發生問題的原因可能是 ClickOnce 當前使用的是 Internet Explorer 緩衝的較舊版本的部署資訊清單,而該版本與伺服器上的最新應用程式資訊清單不匹配。為避免此問題,建議將伺服器 vroot(或部署資訊清單)上的 IIS 設定更改為立即到期,此設定會強制在每次啟用時檢查伺服器。若要在 inetmgr 中進行此操作,請選擇 vroot“屬性”頁上的“HTTP 標題”選項卡,然後選中“啟用內容到期”框,並設定為“立即到期”。

或者,可以先重新啟動 Internet Explorer 或清除 Internet Explorer 的“Temporary Internet Files”檔案夾,然後再次運行該應用程式,這將導致一次伺服器重新同步。 問題:首次從本地磁碟(或 CD-ROM)啟用成功,但之後從“開始”菜單啟用失敗

解決方案:ClickOnce 使用部署提供者 URL 擷取應用程式的更新。請檢查以確保該 URL 指向的位置正確。(有關更多資訊,請參見上面的“部署提供者”。) 問題:錯誤“無法終結應用程式”

解決方案:此錯誤資訊通常表示將該應用程式安裝到 ClickOnce 儲存區時出錯。要麼是應用程式出錯,要麼是儲存區損壞。記錄檔對出錯位置可能會有更好的指示。

要檢查的內容:

檢查部署資訊清單的標識、應用程式資訊清單的標識和主應用程式 EXE 的標識是否都唯一。

如果應用程式套件組合含的檔案路徑過長(超過 100 個字元),則可能超出了儲存區的最大路徑限制。請嘗試縮短路徑並重新安裝。 問題:應用程式設定檔中的 PrivatePath 設定不起作用

解決方案:要使用 PrivatePath(合成探測路徑),應用程式需要獲得完全信任許可權。請嘗試將應用程式資訊清單更改為請求完全信任,然後重試。 問題:卸載期間出現對話方塊“未能卸載應用程式”

解決方案:這通常表示應用程式已經刪除或儲存區已損壞。單擊“確定”後,“添加/刪除程式”項將被刪除。 問題:安裝期間出現對話方塊,提示沒有安裝平台依賴項

解決方案:GAC(全域組件快取)中缺少應用程式運行所需的一個必備項。 使用 Visual Studio 發布問題:在 Visual Studio 中發布時失敗

請確保您具備面向目標伺服器的發布許可權。例如,如果您作為普通使用者而不是管理員登入到終端伺服器電腦,則您可能沒有許可權發布到本地 Web 服務器。

如果使用 URL 發布,請確保目標電腦上啟用了 FrontPage 伺服器擴充。 使用 Mage問題:我嘗試使用憑證存放區區中的認證進行簽名,但收到一個空白訊息框

您需要在“簽名”對話方塊中執行以下操作:

選擇“使用儲存的認證進行簽名”,然後

從列表中選擇一個認證;不會自動選擇第一個認證。 問題:單擊“不簽名”按鈕時導致異常

這是一個已知 bug。所有 ClickOnce 清單都需要進行簽名。只需選擇其中一個簽名選項,然後單擊“確定”即可。

PS:上面的錯誤及解決方案是我轉載的,沒有嘗試,大家遇到並有好的解決方案,希望能貼出來共用。

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.