谷歌和微软在AppData文件夹中安装应用程序,为什么不是我呢?

时间:2009-02-09 20:47:45

标签: .net-3.5 windows-installer uac auto-update

在AppData文件夹中安装应用程序是否可以接受? Google Talk& Chrome未安装在默认的Program Files文件夹中。它们安装在用户的AppData文件夹中。 Microsoft使用ClickOnce做同样的事情......

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

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

谢谢!

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

5 个答案:

答案 0 :(得分:5)

clickonce delployments可以从VS 2008开始取消签名

答案 1 :(得分:2)

你错了一个关键点:

  

我理解UAC是负责任的

事实并非如此。如果您作为标准用户运行,则在XP中应用相同的规则,在许多企业环境中就是这种情况。这不是UAC阻止这个:它是Windows设置文件夹权限的方式,它是设计的。

您回答了自己的问题:如果您要安装到AppData文件夹,只需使用ClickOnce安装程序。

答案 2 :(得分:1)

您使用的是什么自我更新框架?

ClickOnce的最初目标之一是成为一种无影响的安装方法。安装只是一个XCOPY,几乎可以保证不会弄乱系统的其余部分。这是MS选择AppData而非Program Files的部分原因。如果只将文件写入AppData,则不太可能损坏整个系统。

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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