2009-02-09 123 views
2

在AppData文件夹中安装应用程序是否可以接受? Google Talk & Chrome未安装在默认的Program Files文件夹中。他们被安装在用户的AppData文件夹中。微软与ClickOnce做同样的事情...Google和Microsoft在AppData文件夹中安装应用程序,为什么不是我?

我想我的应用程序自我更新,但是当安装在Program Files文件夹中时,它会失败。在Windows Vista(2008和Seven)下,应用程序无法写入Program Files文件夹。我明白UAC是负责任的,但它阻止了我的应用程序自我更新。

如果我想部署在AppData文件夹中解决安全问题,如何告诉我的MSI安装项目安装在AppData?任何想法?

谢谢!

UPDATE:我无法使用ClickOnce,因为它需要证书。我不想花200美元/年购买证书。

+0

您可以创建自己的出版证书虽然过程有些涉及:http://theruntime.com/blogs/jacob/archive/2006/12/04/创建一个域名发布者证书的小内部软件shop.aspx – 2009-02-12 18:51:25

回答

2

你是误会了一个关键点:

据我所知,UAC是负责

这是不正确的。如果您以标准用户身份运行,则在XP中也适用相同的规则,在许多企业环境中都是如此。这不是UAC阻止:这是Windows设置文件夹权限的方式,这是设计。

你有点回答你自己的问题:如果你想安装到AppData文件夹,只需使用ClickOnce安装程序。

+0

ClickOnce强制使用证书。我无法承担200美元/年的证书... – Martin 2009-02-09 21:03:10

+0

您可以使用自签名证书吗? – saschabeaumont 2009-02-09 21:21:22

1

你正在使用什么自我更新框架?

ClickOnce的原始目标之一是成为一个非影响力的安装方法。安装只不过是一个XCOPY,实际上保证不会混淆系统的其他部分。这是MS选择程序文件上的AppData的原因之一。如果你只将文件写入AppData,那么你很可能会损坏整个系统。

如果您的自定义框架想要自我更新,并且只有一个用户,影响较小的安装,那么AppData可能不是一个不错的选择。实际上,Users目录下的任何内容都比Program Files更好。

0

确实,但我在Vista上观察到一个非常奇怪的行为,我在我的msi中使用了appdatafolder属性,它需要管理员权限才能安装,现在当uac打开并且标准使用运行应用程序时,uac显示登录框并且在我们提供相同的应用程序安装时询问管理员密码,但不安装在管理员应用程序数据文件夹中安装的标准用户的应用程序数据文件夹中。

5

的ClickOnce delployments可以从VS 2008是无符号起

1

在Windows 7中,新的MSI 5.0支持“每用户”真正的安装不需要UAC提升 - 现在有一个每用户计划文件目录。这里的PDC谈的更多信息:

http://channel9.msdn.com/pdc2008/PC42/

相关问题