2013-06-05 21 views
53

我用C#/ .NET編寫了一個相當簡單的應用程序,但找不到一個發佈它的好方法。這是一種「工具」,用戶只能運行一次,或者每隔幾個月運行一次。因此,我希望有一種方法可以將它部署到不需要安裝的位置(它可以在下載完成後直接雙擊EXE文件運行)。部署無需安裝即可運行的Visual Studio應用程序的最佳方法

但是,它仍然需要(以某種方式)包含.NET,庫等的正確版本,以便它能夠正確運行。我知道這是在使用ClickOnce時包含的,但仍然會將應用程序安裝到用戶的計算機上。

有沒有辦法可以做到這一點?

編輯 - \ BIN \調試

myAppName.application 
myAppName.exe 
myAppName.exe.config 
myAppName.exe.manifest 
myAppName.pdb 
myAppName.vshost.application 
myAppName.vshost.exe 
myAppName.vshost.exe.config 
myAppName.vshost.exe.manifest 
extraLibrary.dll 

以及兩個文件夾

app.publish 
Resources 

回答

70

這是可能的,看似簡單:

  1. 「發佈」 應用程序(以,例如,驅動器C上的某個文件夾),可以從菜單Build或從項目的屬性 - > Publi SH。這將爲ClickOnce應用程序創建一個安裝程序。
  2. 而是採用了製作安裝,找到生成的文件(EXE文件和的.config.manifest的。應用文件,以及任何DLL文件等) - 它們全部位於相同的文件夾中,通常位於項目文件下的bin\Debug文件夾中(.csproj)。
  3. 解壓該文件夾(不包括任何* .vhost。*文件和app.publish文件夾(它們不是必需的)和.pdb文件,除非您預見直接在用戶系統上進行調試(例如,通過遠程控制)),並將其提供給用戶。

另外一個好處是,作爲一個ClickOnce應用程序,它不需要管理員權限才能運行(如果您的應用程序遵循哪些文件夾使用應用數據等正常指南)。

對於.NET,您可以檢查應用程序中安裝(或根本不需要)最低版本的.NET(大多數用戶已安裝),並顯示一個對話框,其中包含指向下載頁面的鏈接在微軟網站上(或者指向你的一個可以重定向到微軟頁面的網頁 - 這使得如果微軟網址改變,它更加強大)。由於它是一個小型實用程序,因此您可以將.NET 2.0作爲目標,以減少用戶必須安裝.NET的可能性。

它的工作原理。我們在開發和測試過程中使用這種方法,以避免不斷卸載和安裝應用程序,並且仍然非常接近最終應用程序的運行方式。

+0

太棒了,謝謝!你能更清楚地知道我需要在zip中包含哪些文件嗎?我將\ Debug的內容編輯到我的OP中。 – Wilson

+0

@威爾遜:完成了!不過,我不確定「資源」文件夾。我沒有任何項目與這樣的子文件夾。我會把它放進去。你可以通過試圖離開它來看看你的應用程序是否失敗。 –

+1

太好了,謝謝你的回答。 – Wilson

1

首先,需要對發佈的文件:

  1. BUILD - >公佈或通過在解決方案資源管理器中右擊項目 - >屬性 - >在解決方案資源管理器中發佈或選擇項目,然後按Alt鍵 + 輸入 注意:如果您使用的是Visual Studio 2013,那麼在屬性中您必須去BUILD,然後您必須禁用define DEBUG常量並定義TRACE常量,然後就可以開始了。 Representation

  2. 將文件保存到特定文件夾。 查找生成的文件(EXE文件和.config,.manifest和.application文件以及任何DLL文件等) - 它們全部位於相同的文件夾中,通常位於項目文件下方的bin\Debug文件夾中( .csproj的)。 在Visual Studio中,它們位於「應用程序文件」文件夾中,裏面只需要.exe和dll文件。 (你要刪除的ClickOnce和其他文件,然後將這個文件夾一個zip文件和分發。)

注:ClickOnce應用程序項目是否安裝到系統中,但它有一個優勢。您不需要在這裏運行管理權限(如果您的應用程序遵循用於應用程序數據的文件夾的常規準則等)。

+2

爲什麼你需要將DEBUG和TRACE設置爲特定值? –

+0

您可以爲構建打開跟蹤或調試條件屬性,或者既不打開也不打開。因此,有四種類型的構建:調試,跟蹤,兩者或兩者都不。生產部署的某些發佈版本可能不包含;大多數調試版本都包含兩者。 .................................................. ................................. HTTPS://msdn.microsoft.com/en-us/library/aa983575 (v = vs.71).aspx ......................................... .................................................. ......... https://msdn.microsoft.com/en-IN/library/ms164714​​.aspx – abe312

+0

有些歸屬地會... –

相關問題