Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置项目中存在的xml文件问题_Xml_Setup Project - Fatal编程技术网

设置项目中存在的xml文件问题

设置项目中存在的xml文件问题,xml,setup-project,Xml,Setup Project,我使用一个xml文件来确定用户是否是第一次使用,因为我编写了如下代码 <?xml version="1.0" encoding="utf-8"?> <UserFirstDetails> <IsFirstTime>True</IsFirstTime> <ProductOrderNum></ProductOrderNum> <Drive></Drive> </UserFirstDetails>

我使用一个xml文件来确定用户是否是第一次使用,因为我编写了如下代码

<?xml version="1.0" encoding="utf-8"?>
<UserFirstDetails>
<IsFirstTime>True</IsFirstTime>
<ProductOrderNum></ProductOrderNum>
<Drive></Drive>
</UserFirstDetails>
string filePath1 = Application.StartupPath;
string org1 = filePath1 + "\\Input\\UserFirstDetails.xml";
UsrDetails.Load(org1);
XmlNode NdeFirst= UsrDetails.SelectSingleNode("UserFirstDetails/IsFirstTime");
FirstTime = NdeFirst.InnerText;
 if (FirstTime == "True")
 {
   NdeFirst.InnerText = "False";

   XmlNode productnum = UsrDetails.SelectSingleNode("UserFirstDetails/ProductOrderNum");
   productnum.InnerText = 1234567;

    XmlNode drivetag = UsrDetails.SelectSingleNode("UserFirstDetails/Drive");
    drive =C;

   FileInfo fp = new FileInfo(org1);
   fp.Attributes = FileAttributes.Normal;

   UsrDetails.Save(org1);
}
当我第一次安装应用程序时,它对我来说工作正常,但是当我卸载并再次重新安装应用程序时,我得到了一个xml

<?xml version="1.0" encoding="utf-8"?>
<UserFirstDetails>
<IsFirstTime>False</IsFirstTime>
<ProductOrderNum>1234567</ProductOrderNum>
<Drive>C</Drive>
</UserFirstDetails>

如果该Xml文件在您的安装程序中并由MSI文件安装(换句话说,您的应用程序没有创建它),则卸载将卸载它。默认情况下,MSI安装程序安装的每个文件都将被卸载

如果要进行RemovePreviousVersions更新(在递增安装项目版本后),则不会覆盖现有文件,因为覆盖规则包括“不替换已更改的数据文件”

如果在应用程序的代码中创建该文件,则卸载不会将其删除

我还建议不要使用Application.Startup路径,因为这通常是Program Files文件夹,在那里更新文件需要提升。用户的应用程序数据是数据文件的更好位置(毕竟,这就是为什么它被称为数据文件的原因)


对于这样的单个数据项,我可能会使用HKCU注册表项。每台机器安装的问题是,多个用户可以运行该应用程序,因此运行该应用程序的第一个用户会将每个用户标记为第一个用户,因为另一个登录的用户将获得与第一个用户相同的Xml文件

当我们取消安装应用程序时,是否可以将文件更改为原始文件?非常感谢@PhilDW。我得到了正确的输出,使用了用户应用程序数据,正如您建议的那样,我卸载项目时没有删除xml文件。现在,我仅使用用户应用程序数据文件夹,并且我一直将安装项目的“上一版本”属性删除为true。我可以知道原因吗
 <?xml version="1.0" encoding="utf-8"?>
 <UserFirstDetails>
 <IsFirstTime>True</IsFirstTime>
 <ProductOrderNum></ProductOrderNum>
 <Drive></Drive>
 </UserFirstDetails>
 Always create-true
 condition -
 Transitive-False