2

可以在 AppData 文件夹中安装应用程序吗?Google Talk 和 Chrome 都没有安装在默认的 Program Files 文件夹中。它们安装在用户的 AppData 文件夹中。微软对 ClickOnce 做了同样的事情......

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

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

谢谢!

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

4

5 回答 5

5

从 VS 2008 开始,clickonce 部署可以取消签名

于 2009-07-03T14:14:08.557 回答
2

你误会了一个关键点:

我了解 UAC 是负责人

这不是真的。如果您以标准用户身份运行,则同样的规则适用于 XP,在许多公司环境中都是如此。阻止这种情况的不是 UAC:这是 Windows 设置文件夹权限的方式,这是设计使然。

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

于 2009-02-09T20:59:09.643 回答
1

在 Windows 7 中,新的 MSI 5.0 支持真正的“每用户”安装,不需要 UAC 提升——现在有一个每用户 Program Files 目录。以下是 PDC 演讲以获取更多信息:

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

于 2009-07-06T04:45:53.890 回答
1

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

ClickOnce 的最初目标之一是成为一种无影响的安装方法。安装只是一个 XCOPY,几乎可以保证不会与系统的其余部分混淆。这是 MS 选择 AppData 而不是 Program Files 的部分原因。如果您只将文件写入 AppData,那么破坏整个系统的可能性要小得多。

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

于 2009-02-09T21:11:42.733 回答
0

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

于 2009-07-03T13:46:52.070 回答