2013-02-16 81 views
0

我試圖將.NET應用程序部署爲ClickOnce應用程序,但我在定義應用程序的安裝位置時遇到問題。我需要知道這一點,因爲我必須包含支持文件。我已經將支持文件添加爲「現有項目」。我曾假定該程序將安裝在Program Files中,但它並不存在。相反,桌面上只有一個快捷方式。有人可以解釋如何/在哪裏使用VS2012定義安裝路徑?定義安裝文件的位置

回答

1

Clickonce應用程序安裝在用戶配置文件下,而不是Program Files路徑。

在Windows Vista和Windows 7,ClickOnce應用程序路徑將是介於c:\users\username\AppData\Local\Apps\2.0\

在Windows XP中,ClickOnce應用程序路徑將是介於c:\document and Settings\username\LocalSettings\Apps\2.0\

注意ClickOnce應用程序路徑是在安裝時不同,每次,我發現最好的方法是讓您的應用程序將自己的應用程序路徑寫入註冊表項,這樣您就可以通過查看註冊表確切知道應用程序路徑的位置。

0

所以user831062指出,ClickOnce應用程序安裝在用戶配置文件下,而不是Program Files路徑。因此,安裝目錄在每臺機器上都不同,幾乎不可能直接訪問。

我被掛斷的部分是項目所在文件的位置,更重要的是 - 我如何訪問它們?

嗯,正如提到IN THIS LINK,如果您將文件標記爲 「數據文件」,下設:

Project Properties > Publish > Application Files > Publish Status 

,你就可以使用類似訪問它們:

textBox = File.ReadAllLines(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\myFile.txt")).ToList(); 

如果您不將其標記爲「數據文件」,而只是將其標記爲「包含(自動)」,則它將位於安裝目錄本身中,可以通過使用以下類似的方式直接調用文件來訪問它:

textBox = File.ReadAllLines(@"myFile.txt")).ToList(); 

無論如何,花了我一個小時左右來找到這個,所以希望它能幫助別人。

2

我發現的一個解決方案是使用一些Application類屬性來確定ClicOnce在哪裏安裝了我的程序實例。但請注意,有些程序在卸載時會被刪除。

// To get the path for the executable file that started the application, not including the executable name. 
PATH_RESOURCES = Application.StartupPath ; 

對於持續性的數據,我創建喜歡特定路徑引用:

PATH_USERDATA = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\myAppName\"; 
     if (!System.IO.Directory.Exists((string)PATH_USERDATA)) 
     { 
      System.IO.Directory.CreateDirectory((string)PATH_USERDATA); 
     } 


PATH_REPORTS = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\myAppName\"; 
     if (!System.IO.Directory.Exists((string)PATH_REPORTS)) 
     { 
      System.IO.Directory.CreateDirectory((string)PATH_REPORTS); 
     } 
0

如果你已經添加文件到您的項目中,爲「建設行動」,「內容」,並設置「屬性複製到輸出目錄「到」始終複製「。這樣,這些文件將包含在您的部署中。當應用程序運行時,檢索程序集的位置並查找與它們包含在項目中相同的相關文件夾。例如,如果它們位於構建輸出目錄(/ bin/debug /或/ bin/release /)的頂層文件夾中,它們將與可執行文件包含在相同的文件夾中,您可以使用它發現它:

System.Reflection.Assembly.GetExecutingAssembly()。位置