2012-09-26 24 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"); 

它做工精细!