2010-03-11 20 views
1

對,我有一個簡單的應用程序,它包含一個日曆,一個Set Event按鈕和一個使用WPF中的DataTemplate填充的列表框。當我構建應用時,Events.xml文件是這樣的:如何在更新之前保存XML文件?

<?xml version="1.0" encoding="utf-8" ?> 
    <events> 

    </events> 

我通過代碼向xml添加事件。 xml文件的最終結構如下

<?xml version="1.0" encoding="utf-8" ?> 
<events> 
    <event Name="Some Name"> 
     <startDate>20.03.2010</startDate> 
     <endDate>29.03.2010</endDate> 
    </event> 
</event> 

現在,這是我的問題。如果我更新應用程序並使用Click Once進行部署,並且應用程序自我更新,則由於新文件爲空,我將丟失列表。任何解決方法呢?

下面是如何添加數據:

var xDocument = XDocument.Load(@"Data\Events.xml"); 
xDocument.Root.Add(new XElement("event", new XAttribute("name", event.Name), 
       new XElement("startDate", startDate), 
       new XElement("endDate", endDate) 
       ) 
       ); 
xDocument.Save(@"Data\Events.xml"); 

回答

0

如果它是一個選項,我建議你不包括Events.xml作爲項目的一部分。如果你這樣做,你可以:

  1. 檢查加載它之前是否有。
  2. 如果不存在,請寫出一個空的。

如果Events.xml不是該項目的一部分,則點擊一次將不會覆蓋更新。

+0

如果我通過代碼手動創建文件,然後更新應用程序,我仍然失去它,因爲更新不會更新.exe文件。相反,它會創建一個新文件夾並將新的更新文件放在那裏。 –

+0

在這種情況下,我建議將這個Events.xml文件保存到 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); –

+0

我會試試看。謝謝你的提示。 –

0

我想出了我自己的問題。

這是我的方法。創建一個文件夾@C:\Program Files\<MyApp>\Data\在應用程序首次運行時將Events.xml文件添加到該文件夾​​中,並且始終有文件。

唯一的缺點是用戶需要在卸載時手動刪除文件夾。

默認情況下,單擊一次不會安裝應用程序@C:\Program Files\<MyApp>\。它安裝到@C:\Users\<Username>\AppData\Local\Apps\2.0\(在Windows 7下)。

任何解決方法呢?

相關問題