2014-04-25 171 views
2

我閱讀了一些關於如何進行ClickOnce部署的文檔,現在我正在嘗試部署一個Hello World應用程序。ClickOnce Hello World不工作

我有一個WPF默認應用程序(只是一個空的窗口)。

這是我做的:

  • 打開項目屬性。
  • 打開發布嚮導。
  • 選擇本地服務器。我使用Visual Studio(File/New/WebSite)創建了一個網站,然後我可以從列表中選擇它。我用了一個名爲Test1

local server

  • 然後選擇說的應用程序將可在選擇在線和離線
  • 發佈
  • 我現在運行的國際空間站Express服務器,並轉到http://localhost:6507/publish.htm看起來像這個:

publish page

  • 我打的發佈按鈕和下載SETUP.EXE
  • 但是當我開始SETUP.EXE我得到以下錯誤:

error msg

  • 和日誌是:

    The following properties have been set: 
    Property: [AdminUser] = true {boolean} 
    Property: [InstallMode] = HomeSite {string} 
    Property: [NTProductType] = 1 {int} 
    Property: [ProcessorArchitecture] = AMD64 {string} 
    Property: [VersionNT] = 6.2.0 {version} 
    Running checks for package 'Microsoft .NET Framework 4.5 (x86 and x64)', phase BuildList 
    Reading value 'Version' of registry key 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full' 
    Read string value '4.5.50938' 
    Setting value '4.5.50938 {string}' for property 'DotNet45Full_TargetVersion' 
    The following properties have been set for package 'Microsoft .NET Framework 4.5 (x86 and x64)': 
    Property: [DotNet45Full_TargetVersion] = 4.5.50938 {string} 
    Running checks for command 'DotNetFX45\dotNetFx45_Full_x86_x64.exe' 
    Result of running operator 'ValueEqualTo' on property 'InstallMode' and value 'HomeSite': true 
    Result of checks for command 'DotNetFX45\dotNetFx45_Full_x86_x64.exe' is 'Bypass' 
    Running checks for command 'DotNetFX45\dotNetFx45_Full_setup.exe' 
    Result of running operator 'ValueNotEqualTo' on property 'InstallMode' and value 'HomeSite': false 
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'DotNet45Full_TargetVersion' and value '4.5.50709': true 
    Result of checks for command 'DotNetFX45\dotNetFx45_Full_setup.exe' is 'Bypass' 
    'Microsoft .NET Framework 4.5 (x86 and x64)' RunCheck result: No Install Needed 
    Launching Application. 
    URLDownloadToCacheFile failed with HRESULT '-2146697208' 
    Error: An error occurred trying to download  `http://agarwaen-pc:6507/WpfApplication1.application`. 
    

我堅持這個,因爲它是一個Hello World示例,不是不工作。我需要部署一個更加複雜的項目。 任何幫助將不勝感激。 在此先感謝。

PD:我在想這個錯誤的原因可能是我使用的服務器。我的意思是我只是指向一個有發佈頁面的項目,然後右鍵點擊在瀏覽器中顯示啓動ISS服務器。也許安裝程序無法下載所需的文件,因爲服務器沒有提供這些文件。

編輯: 我搬到無法表達ISS的版本和SETUP.EXE文件現在已成功下載。現在,當應用程序嘗試下載其餘文件時,會出現另一個下載錯誤。有消息稱無連接可以作出,因爲目標機器積極地拒絕它

的消息是:

PLATFORM VERSION INFO 
    Windows    : 6.2.9200.0 (Win32NT) 
    Common Language Runtime  : 4.0.30319.18408 
    System.Deployment.dll  : 4.0.30319.17929 built by: FX45RTMREL 
    clr.dll    : 4.0.30319.18408 built by: FX451RTMGREL 
    dfdll.dll   : 4.0.30319.17929 built by: FX45RTMREL 
    dfshim.dll   : 4.0.41209.0 (Main.041209-0000) 

SOURCES 
    Deployment url   : http://agarwaen-pc/WpfApplication1.application 
         Server  : Microsoft-IIS/8.0 
    Deployment Provider url  : http://agarwaen-pc:6507/WpfApplication1.application 

ERROR SUMMARY 
    Below is a summary of the errors, details of these errors are listed later in the log. 
    * Activation of http://agarwaen-pc/WpfApplication1.application resulted in exception. Following failure messages were detected: 
     + Downloading http://agarwaen-pc:6507/WpfApplication1.application did not succeed. 
     + Unable to connect to the remote server 
     + No connection could be made because the target machine actively refused it 10.6.53.219:6507 

COMPONENT STORE TRANSACTION FAILURE SUMMARY 
    No transaction error was detected. 

WARNINGS 
    There were no warnings during this operation. 

OPERATION PROGRESS STATUS 
    * [4/25/2014 12:15:27 AM] : Activation of http://agarwaen-pc/WpfApplication1.application has started. 

ERROR DETAILS 
    Following errors were detected during this operation. 
    * [4/25/2014 12:15:33 AM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) 
     - Downloading http://agarwaen-pc:6507/WpfApplication1.application did not succeed. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) 
      at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() 
      at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) 
      at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadManifest(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ManifestType manifestType, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirect(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.FollowDeploymentProviderUri(SubscriptionStore subStore, AssemblyManifest& deployment, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
      at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 
     --- Inner Exception --- 
     System.Net.WebException 
     - Unable to connect to the remote server 
     - Source: System 
     - Stack trace: 
      at System.Net.HttpWebRequest.GetResponse() 
      at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) 
     --- Inner Exception --- 
     System.Net.Sockets.SocketException 
     - No connection could be made because the target machine actively refused it 10.6.53.219:6507 
     - Source: System 
     - Stack trace: 
      at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
      at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) 

COMPONENT STORE TRANSACTION DETAILS 
    No transaction information is available. 
+0

調出提琴手。看起來像'http:// mypcname:6507/WpfApplication1.application'不等於'http:// localhost:6507/WpfApplication1.application'。 – Aron

+0

@Aron真正的消息說:'http:// agarwaen-pc:6507/WpfApplication1.application'和'agarwaen-pc'是我的電腦名稱。我會解決這個問題以避免混淆。抱歉。 – agarwaen

+0

我意識到這一點。但是......如果你使用IIS的虛擬主機,它們是不一樣的。此外,IIS Express不允許您使用除localhost之外的任何地址訪問它。將瀏覽器指向該地址並查看它是否下載了某些內容。 – Aron

回答

4

這是ClickOnce部署一個普遍的問題。您不能發佈一個ClickOnce應用程序到您的本地主機,並從那裏下載。我認爲問題是關於一些內部Windows DNS /名稱解析,它將localhost轉換爲your-pc:1234 - 總是。幾個月前我有同樣的問題,因爲我試圖將我的應用程序發佈到本地主機。現在沒有我找到的解決方法。在本地,您需要將其作爲脫機軟件包進行部署。您只能使用實際聯機的服務器在線部署(從http://...更新)。不過,您可能會嘗試使用UNC路徑(如\\ServerInNetwork\Deployment\)來測試更新過程。 UNC和Web之間的更新行爲是相同的。

另一個topic可能會幫助你。

+0

謝謝。知道這些錯誤的原因真的很好。 (1) – agarwaen