2010-05-31 60 views
0

我一直面臨着部署problem.I've建有visual studio 2008一個WPF application並創建了一個installer(MSI)工作正常但是,增加automatic更新是件很痛苦的事情。我在windowsclient.net上看到了this article,但它看起來很老,但對我來說可能是完美的東西。然後我看着.Net應用程序updater block v2.0,它使用enterprise library june 2005,由於某種原因,它不在我的機器上安裝。WPF部署策略dilemma.clickonce(僅限定製)+自動更新VS安裝程序(無限costomization)沒有自動更新

我想我需要使用較新的企業級磁帶庫,所以我installed and compiled Enterprise 4.1(october 2008)但沒有更好的happened.To我決定給一個嘗試CLickonce deployment.After它掙扎着,它幾乎perfect.I意識到,當我正在測試我的機器上的clickonce提供的更新,這是XP,我沒有注意到有需要sqlite dll in the GAC。當然它已經在那裏了。我注意到,當我搬到Vista時,有一個問題。檢查網絡後,我知道it's impossible to add a dll to the Global Assembly Cache
現在我被卡住了,我想我已經打了一堵牆。可以分享他的一些經驗嗎?我願意嘗試更新程序塊,如果我能得到幫助。

感謝您的閱讀!

回答

1

(不適合在評論)

這裏的東西有用的 - 你可以部署SQLCE dll的本地,而不是安裝的先決條件,這使得它更易於部署。退房this article

這是另一篇有用的文章:how to keep your data safe from ClickOnce updates

如果您退房this thread,這將更有意義。我在這個線程中有一個帖子,裏面有兩個鏈接。一個指向ClickOnce處理數據庫部署的方式,另一個指向與上述博客文章基本相同的主題。

+0

謝謝羅賓,這給了我足夠的信息去。我仍然嘗試你的方法,但我認爲它會好起來的,但我還有其他兩個問題。從這個鏈接:http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/fc92694c-fd68-4ce6-b1c5-617359f08883/ 1:該代碼在wpf projet中的位置?我猜測它將在winform項目中的program.cs中。 2:LocalApplicationData是否解析爲xp,vista,windows7.i'm等不同平臺上的知名文件夾,用戶可能會使用Windows 7或Vista。我應該爲此擔心嗎?感謝您的努力和回覆。 – 2010-06-02 10:23:38

+0

沒關係問題1.我發現可以使用主要方法。正如在這個線程http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e5757d5c-28f3-4233-8a5f-00116587d5c7謝謝。順便在你的博客之一,你建議設置一個連接字符串的runtime.that意味着連接字符串應該在settings.properties設置爲用戶的範圍,因爲技術上app.config是一個只讀file.correct我,如果我錯了。如果我使用單獨的XML文件來存儲我的連接字符串,是否會被clickonce更新覆蓋?感謝這個有用的對話 – 2010-06-02 12:17:54

+0

LocalApplicationData是一個.NET環境變量;它在Vista和7上解析爲C:\ users \ username \ AppData \ Local。在XP上,它類似於c:\ documents和settings \ username \ applicationdata \ localsettings \ appdata。如果你找不到它,請回復,我會查找它。另外,是的,它會去program.cs。我在一年內沒有完成WPF - 它沒有一個用於啓動應用程序的program.cs?在打開它之前,您只需將move-the-db代碼放在某處即可。 – RobinDotNet 2010-06-02 16:53:20

0

首先,您不能使用該更新程序塊。它適用於.NET 1.1。在.NET 2.0中添加ClickOnce部署時,它被標記爲過時。

您可能不需要在GAC中安裝該dll。在很多情況下,您可以將其包含在部署中,並找到本地引用並使用它。它只依賴於dll。所以這裏是我建議你嘗試:

將dll添加到您的項目。將「構建操作」設置爲「無」。將「複製到本地目錄」設置爲「不要複製」。

刪除項目中的引用到該dll,然後重新添加它。但不是從GAC中選擇,而是瀏覽到您剛添加到項目中的那個並選擇它。在引用屬性上,將'copy local'設置爲'true'。

現在,當您運行它時,它將訪問本地副本,而不是在GAC中查找一個副本。

就像我說的,這在某些情況下效果很好。它適用於SQLCE和DirectX,但不適用於Infragistics。某些程序集確實必須在GAC中安裝。你會知道的唯一方法就是如果你嘗試它。

如果您最終必須將其放入GAC中,您可以創建一個MSI來執行此操作,並將其作爲ClickOnce應用程序的先決條件進行部署。所以你仍然可以爲你的主應用程序使用ClickOnce。

+0

我找到了解決這個問題的方法。我試過了ssce,並將數據庫的「構建動作」設置爲內容,並將其複製到輸出目錄以便始終複製,並且在部署的pc中一切正常。想要使用和更新。你能指點我一個方向嗎?謝謝你的回覆,雖然 – 2010-06-01 16:45:53