ClickOnce 部署中的伺服器和用戶端組態問題
如果您在 Windows Server 上使用 Internet Information Services (IIS),而您的部署包含 Windows 無法辨識的檔案類型 (例如 Microsoft Word 檔案),則 IIS 會拒絕傳輸該檔案,而且您的部署不會成功。
此外,某些 Web 伺服器和 Web 應用程式軟體 (例如 ASP.NET) 包含您無法下載的檔案和檔案類型清單。 例如,ASP.NET 會阻止下載所有 Web.config 檔案。 這些檔案可能包含敏感性資訊 (例如使用者名稱和密碼)。
儘管此限制不會造成下載核心 ClickOnce 檔案 (例如資訊清單和組件) 出現問題,但此限制可能會阻止您下載包含在 ClickOnce 應用程式一部分的資料檔案。 在 ASP.NET 中,您可以移除禁止從 IIS 組態管理員下載這類檔案的處理常式來解決此錯誤。 如需其他詳細資料,請參閱 IIS 伺服器文件。
某些 Web 伺服器可能會封鎖副檔名為 .dll、.config 和 .mdf 等的檔案。 Windows 型的應用程式通常包含具有這些其中某些副檔名的檔案。 如果使用者嘗試執行 ClickOnce 應用程式來存取 Web 伺服器上已封鎖的檔案,則會產生錯誤。 依預設,ClickOnce 會發佈每一個副檔名為 .deploy 的應用程式檔案,而不是取消封鎖所有的檔案副檔名。 因此,系統管理員只需將 Web 伺服器設定為取消封鎖以下三種檔案副檔名:
.application
.manifest
.deploy
不過,您可以清除 [發佈選項對話方塊] 上的 [使用 ".deploy" 檔案副檔名] 選項來停用此選項 (在這種情況下,您必須將 Web 伺服器設定為取消封鎖應用程式中所使用的所有檔案副檔名)。
例如,如果您使用的是未安裝 .NET Framework 的 IIS,或使用的是其他 Web 伺服器 (例如 Apache),則必須設定 .manifest、.application 和 .deploy。
ClickOnce 與安全通訊端層 (SSL)
ClickOnce 應用程式可透過 SSL 正常運作,但 Internet Explorer 發出 SSL 憑證的相關提示時除外。 當憑證出現問題時 (例如網站名稱不相符或憑證已過期時),可能會發出提示。 若要讓 ClickOnce 透過 SSL 連線運作,請確定憑證是最新的,且憑證資料與網站資料相符。
ClickOnce 和 Proxy 驗證
ClickOnce 從 .NET Framework 3.5 開始提供對 Windows 整合式 Proxy 驗證的支援。 不需要特定的 machine.config 指示詞。 ClickOnce 不提供對其他驗證通訊協定 (例如 Basic 或 Digest) 的支援。
您也可以將 Hotfix 套用至 .NET Framework 2.0 來啟用此功能。 如需詳細資訊,請參閱修正:當您嘗試在已設定為使用 proxy 伺服器的用戶端電腦上安裝您在 .NET Framework 2.0 中建立的 ClickOnce 應用程式時,出現錯誤訊息:「需要 Proxy 驗證」。
如需詳細資訊,請參閱 <defaultProxy> 元素 (網路設定)。
ClickOnce 和網頁瀏覽器相容性
目前,只有在使用 Internet Explorer 開啟部署資訊清單的 URL 時,ClickOnce 安裝才會啟動。 從其他應用程式 (例如 Microsoft Office Outlook) 啟動 URL 的部署只有在 Internet Explorer 設為預設網頁瀏覽器時,才會成功啟動。
注意
如果部署提供者不是空白,或已安裝 Microsoft .NET Framework Assistant 擴充功能,則支援 Mozilla Firefox。 此擴充功能會與 .NET Framework 3.5 SP1 一起封裝。 針對 XBAP 支援,會視需要啟用 NPWPF 外掛程式。
透過瀏覽器指令碼啟用 ClickOnce 應用程式
如果您已開發一個使用 Active Scripting 啟動 ClickOnce 應用程式的自訂網頁,您可能會發現該應用程式不會在某些機器上啟動。 Internet Explorer 包含一個名稱為 [自動提示檔案下載] 的設定,這會影響此行為。 此設定位於會影響此行為的 [選項] 功能表中的 [安全性] 索引標籤上。 其名稱為 [自動提示檔案下載],並列在 [下載] 類別底下。 對於內部網路網頁,此屬性預設為 [啟用],而對於網際網路網頁,此屬性預設為 [停用]。 當此設定設為 [停用] 時,任何以程式設計方式啟動 ClickOnce 應用程式的嘗試 (例如,透過將其 URL 指派給 document.location
屬性) 都會遭到封鎖。 在此情況下,使用者只能透過使用者起始的下載來啟動應用程式 (例如,透過按一下設定為應用程式 URL 的超連結)。
其他伺服器設定問題
需要系統管理員許可權
如果您要使用 HTTP 來進行發佈,則必須對目標伺服器擁有系統管理員許可權。 IIS 需要此許可權層級。 如果您不使用 HTTP 來進行發佈,則只需要對目標路徑擁有寫入權限。
伺服器驗證問題
當您發佈到關閉「匿名存取」的遠端伺服器時,您會收到以下警告:
"The files could not be downloaded from http://<remoteserver>/<myapplication>/. The remote server returned an error: (401) Unauthorized."
注意
如果網站提示您輸入預設憑證以外的憑證,則可以讓 NTLM (NT 查問-回應) 驗證運作,並且在 [安全性] 對話方塊中,當系統提示您是否要儲存所提供的憑證以供未來工作階段使用時按一下 [確定]。 不過,此因應措施不適用於基本驗證。
使用協力廠商 Web 伺服器
如果您從 IIS 以外的 Web 伺服器部署 ClickOnce 應用程式,且該伺服器傳回主要 ClickOnce 檔案 (例如部署資訊清單和應用程式資訊清單) 的內容類型不正確時,您可能會遇到問題。 若要解決此問題,請參閱 Web 服務器的說明文件,以了解如何將新的內容類型新增至伺服器中,並確定下表所列的所有檔案名稱副檔名對應都已到位。
副檔名 | 內容類型 |
---|---|
.application |
application/x-ms-application |
.manifest |
application/x-ms-manifest |
.deploy |
application/octet-stream |
.msu |
application/octet-stream |
.msp |
application/octet-stream |
ClickOnce 和對應磁碟機
如果您使用 Visual Studio 來發佈 ClickOnce 應用程式,則無法將對應磁碟機指定為安裝位置。 不過,您可以使用資訊清單產生器和編輯器 (Mage.exe 和 MageUI.exe) 來修改 ClickOnce 應用程式以從對應磁碟機安裝。 如需詳細資訊,請參閱 < Mage.exe (資訊清單產生和編輯工具)並MageUI.exe (圖形用戶端、資訊清單產生和編輯工具)。
不支援使用 FTP 通訊協定來安裝應用程式
ClickOnce 支援從任何 HTTP 1.1 Web 伺服器或檔案伺服器安裝應用程式。 不支援使用 FTP (檔案傳輸通訊協定) 來安裝應用程式。 您只能使用 FTP 來發佈應用程式。 下表摘要說明這些差異:
URL 類型 | 描述 |
---|---|
ftp:// | 您可以使用此通訊協定來發佈 ClickOnce 應用程式。 |
http:// | 您可以使用此通訊協定來安裝 ClickOnce 應用程式。 |
https:// | 您可以使用此通訊協定來安裝 ClickOnce 應用程式。 |
file:// | 您可以使用此通訊協定來安裝 ClickOnce 應用程式。 |
Windows 防火牆
預設情況下,Windows 會啟用 Windows 防火牆。 如果您是在已安裝 Windows 的電腦上開發應用程式,則仍然可以從執行 IIS 的本機伺服器發佈和執行 ClickOnce 應用程式。 不過,除非您開啟 Windows 防火牆,否則您無法從另一部電腦存取執行 IIS 的伺服器。 如需管理 Windows 防火牆的相關指示,請參閱 Windows 說明。
Windows Server:啟用 FrontPage 伺服器擴充功能
需要 Microsoft 的 FrontPage Server 擴充功能,才能將應用程式發佈至使用 HTTP 的 Windows Web 伺服器。
根據預設,Windows Server 未安裝 FrontPage Server 擴充功能。 若要使用 Visual Studio 來發佈到一個使用 HTTP 和 FrontPage 伺服器擴充功能的 Windows Server Web 伺服器,則必須先安裝 FrontPage Server 擴充功能。 您可以使用 Windows Server 中的 [管理您的伺服器] 管理工具來執行安裝。
Windows Server:鎖定內容類型
Windows Server 2003 上的 IIS 會鎖定除某些已知內容類型 (例如 .htm、.html、.txt 等) 以外的所有檔案類型。 為了能夠使用此伺服器來部署 ClickOnce 應用程式,您必須變更 IIS 設定以允許下載 .application、.manifest 類型的檔案,以及應用程式所使用的任何其他自訂檔案類型。
如果您使用 IIS 伺服器來進行部署,請執行 inetmgr.exe,然後為預設網頁新增檔案類型:
若為 .application 和 .manifest 副檔名,則 MIME 類型應為 "application/x-ms-application"。若為其他檔案類型,則 MIME 類型應為 "application/octet-stream"。
如果您建立一個副檔名為 "<em>" 且 MIME 類型為 "application/octet-stream" 的 MIME 類型,則它將允許下載未封鎖之檔案類型的檔案。 (不過,無法下載像是 *.aspx 和 *.asmx 之類的已封鎖檔案類型。)
如需在 Windows Server 上設定 MIME 類型的特定指示,請參閱如何將 MIME 類型新增至網站或應用程式。
內容類型對應
透過 HTTP 發佈時,.application 檔案的內容類型 (也稱為 MIME 類型) 應為 "application/x-ms-application"。如果您已在伺服器上安裝 .NET Framework 2.0,則會自動為您設定。 如果未安裝,則您需要為 ClickOnce 應用程式 vroot (或整個伺服器) 建立 MIME 類型關聯。
如果您使用 IIS 伺服器進行部署,請執行 inetmgr.exe 並為 .application 副檔名新增新的 "application/x-ms-application" 內容類型。
HTTP 壓縮問題
透過 ClickOnce,您可以執行使用 HTTP 壓縮的下載 (HTTP 壓縮是一種 Web 伺服器技術,它可在將資料串流傳送到用戶端之前使用 GZIP 演算法來壓縮資料串流)。 用戶端 (在本例中為 ClickOnce) 會在讀取檔案之前先解壓縮該串流。
如果您是使用 IIS,則可以輕鬆地啟用 HTTP 壓縮。 不過,當您啟用 HTTP 壓縮時,只會針對某些檔案類型 (即 HTML 和文字檔) 來加以啟用。 若要為組件 (.dll)、XML (.xml)、部署資訊清單 (.application) 和應用程式資訊清單 (.manifest) 啟用壓縮,則必須將這些檔案類型新增至 IIS 要壓縮的類型清單中。 在您將檔案類型新增至部署之前,只會壓縮文字檔和 HTML 檔。
如需 IIS 的詳細指示,請參閱如何指定其他檔案類型來進行 HTTP 壓縮。