2008-10-03 29 views
4

我目前正面臨單一實例clickonce部署應用程序的問題,也許有人對此有個好主意。查找正在運行的clickonce已部署的單實例應用程序?

我的應用程序由一個web應用程序調用,該應用程序將參數傳遞給此exe文件。現在的問題是,如果應用程序已經運行,則需要相當長的時間,直到新實例啓動,參數被移交給正在運行的實例,並關閉(打開URL,檢查更新,.. )。

那麼有沒有辦法檢測到有一個正在運行的實例,而不需要引入一個新的小應用程序來檢測?

目標是減少第二,第三,...調用需要將參數傳遞給正在運行的實例的時間。

+0

你如何將參數傳遞給應用程序?查詢字符串?如果是這樣,當您嘗試啓動應用程序的第二個實例時,第一個應用程序如何獲取參數?我們試圖實現這一點,但StartupNextInstance事件不包含查詢字符串參數。 – codeConcussion 2008-10-03 13:37:33

回答

1

當您設置部署設置時,您可以告訴VS只讓應用程序每x次更新一次(每天,每週一次)。您也可以告訴它在後臺啓動應用程序並進行更新。這兩個都可以自己解決你的問題。

這些設置位於「項目」設置的「發佈」選項卡上。單擊「安裝模式和設置」部分中的「更新」按鈕並設置適當的設置。

0

我覺得我不清楚,我正在努力實現。

我想要做的是,如果有一個實例運行,直接訪問這一個,而無需啓動clickonce網址。我尋找一個解決方案,在那裏我不需要編寫一個小程序(它也必須被部署,...),它檢查應用程序是否正在運行,如果是,則交付參數,如果不啓動clickonce網址。

後臺更新並不是一個真正的選擇,因爲這個「連接到應用程序」屏幕仍然存在,並且消耗了時間,而且每個用戶每次運行最新版本的應用程序都是必須的。

+0

然後沒有解決方案。它必須在運行應用程序之前調出更新窗口。如果你不想延期檢查更新,你可以在每次程序執行時仍然檢查後臺,這樣它就直接跳到打開程序。 – 2008-10-03 10:08:41

0

這似乎是Click-Once技術的一個有趣用法。 我的印象是Click-Once非常適合將客戶端應用程序分發到多個多個企業內的最終用戶計算機。

在這裏描述的情況下,這是一個由Web服務器應用程序使用的後臺應用程序 - 我希望這個應用程序只能安裝在企業中的幾臺服務器上。

問題我有是:

  • 如何將Web應用程序傳遞參數給正在運行的實例,如果Web應用程序可以檢測到它? (例如.NET遠程處理?)
  • 您通過點擊一次(而不是Windows安裝程序)分發此後臺應用程序的原因是什麼?

知道這可能有助於解決您的問題。

1

不,它不是一個後臺應用程序。 Web應用程序和Winforms應用程序正在使用數據庫的類似子集。我試圖不去深入細節,因爲這對問題並不重要,但要更清楚:使用Web應用程序,用戶正在爲我們的業務案例創建元數據,並使用Winforms應用程序爲用戶提供服務他們的具體工作。

因此,通過此鏈接,可以創建一組新的元數據,並在「工作應用程序」中交叉檢查結果。

因此,有2種具體情況:

  1. 的的WinForms,應用程序不是在客戶端上運行:當用戶點擊點擊一次開始菜單項,或在Web應用程序的鏈接,應有盡有應該以現在的方式完成(更新檢查,...)。所以這個場景適用於我。

  2. Winforms-App在客戶端上運行:正在運行的實例應該儘快顯示新的元數據集,而不需要任何一次點擊更新檢查或其他任何操作。 我試圖繞過這種情況,即「點擊一次啓動應用程序」對話框彈出,新的應用程序實例正在啓動,新實例將參數傳遞給正在運行的實例並關閉自身。 因此,我尋找一個解決方案,在那裏我實現了這個目標,而不需要創建一個新的小型exe文件,這個exe文件就是web應用程序所熟知的。

相關問題