2012-09-26 21 views
0

我已經爲我的winform創建了一個安裝文件。當我運行這個安裝文件時,應用程序將被安裝到用戶指定的位置。安裝程序還會將一些xml文件複製到該位置。用戶運行應用程序後,它將從xml文件中讀取一些設置。從安裝路徑中讀取xml文件

我想知道的是,因爲xml文件的位置是靈活的(用戶指定的),我們如何知道要讀取哪個位置?我們如何在winform編碼中指定它應該從安裝位置讀取?

回答

1

XML文件是否被複制到與您的可執行文件相同的位置?在這種情況下,您可以使用WinForms應用程序中的Application.ExecutablePath來獲取可執行文件的位置,然後從那裏創建XML文件的路徑。

+0

是的,安裝後它與我的exe文件一樣。 – Coolguy

+0

您可以通過相對路徑閱讀它們。如果xml文件在同一個目錄下,那麼你可以通過它們的名字來讀取這些文件。 – Tomtom

+0

有沒有我的朋友的例子? – Coolguy

2

你是否看過Application.ExecutablePath中exe文件運行的路徑,因此這將成爲安裝的基礎目錄。

String startingdir = Path.GetDirectoryName(Application.ExecutablePath); 
foreach(String Filename in Directory.GetFiles(startingdir,"*.xml") 
{ 
// process 
} 
+0

有沒有我的朋友的例子? – Coolguy

+0

Applicaiton.ExecutablePath返回一個字符串中的目錄名稱。所以你現在可以搜索XML文件,或者你可能知道你正在尋找哪些文件。 – BugFinder

+0

還有添加示例 – BugFinder

0

如果將文件複製到你的exe文件的工作文件夾,然後就可以用相對路徑(無需絕對路徑)解決這些問題。

編輯:下面是一個例子

XmlDocument document = new XmlDocument(); 
document.Load("filename.xml"); 

這段代碼會試圖讀取該文件filename.xml中這是包含您的exe文件相同的文件夾。

XmlDocument document = new XmlDocument(); 
document.Load("somefolder/filename.xml"); 

而這一次將嘗試從位於包含您的exe

+0

有沒有我的朋友的例子? – Coolguy

+0

我試過「reader = new XmlTextReader(Application.ExecutablePath);」,但是不這樣做只會讀取exe文件?我們如何編寫代碼來讀取xml文件? – Coolguy

0

我建議的方法是創建一個文件夾中的文件夾somefolder讀取文件filename.xml中步驟在您的安裝程序中,用戶可以設置文件的位置。把它放在註冊表中。並得到您的應用程序從註冊表

1

讀它,我已經試過這

reader = new XmlTextReader(Application.StartupPath + "\\MyFile.xml"); 

它做工精細!