2010-08-30 82 views

回答

3

坦率地说,我一直认为ClickOnce处理数据的方式是危险的。如果您使用ClickOnce部署数据库,它会将其放入DataDirectory中。然后,当您将更新部署到应用程序时,它会将数据库向前复制到安装下一版应用程序的文件夹中。但是,如果数据库发生更改,则会将其复制到文件夹+ \ pre,并将新数据放入数据目录中。如果你没有意识到你改变了它,它会取代它。如果你打开一个SQLCE数据库并查看数据结构,它就会被部署。惊喜!

我认为将数据存储在用户档案下的其他文件夹中更有意义,并且更安全。然后你可以选择何时更新你的数据库。 This article将显示如何移动您的数据,以便从ClickOnce更新安全。

此外,当您想要更改数据库时,可以使用SQL语句来执行此操作,例如“ALTER TABLE”等。我创建了一个脚本并将其作为一个长字符串进行部署(其中包含回车符),并让应用程序通过回车分开资源,并逐个执行语句。你得到了一般想法。

关于用户设置的一条评论 - 您可以通过UI以编程方式更改这些内容(即赋予用户能力)。但请注意,如果您更改了应用程序的证书并运行了足够高的.NET版本(3.5,4),它本身不会引起问题,但它与ClickOnce应用程序具有不同的身份,并且下次更新发布时,用户设置不会继续。出于这个原因,我还为配置数据推出了自己的XML文件,并将其存储在LocalApplicationData中。

0

用户级别的设置将不通过的ClickOnce更新过程中被覆盖,但你可以把新的应用程序级别的设置,因为[YourExeName].exe.config文件在更新过程中被覆盖。

如果您需要覆盖用户级设置,则必须以编程方式执行此操作。

相关问题