【问题标题】:Google and Microsoft install applications in the AppData Folder, why not me?Google 和 Microsoft 在 AppData 文件夹中安装应用程序,为什么不是我?
【发布时间】:2009-02-09 20:47:45
【问题描述】:

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

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

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

谢谢!

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你误会了一个关键点:

    我了解 UAC 负责

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

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

    【讨论】:

    • 你可以使用自签名证书吗?
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 并没有真正的帮助,因为大概 OP 希望该应用程序在 XP 和 Vista 上运行。
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        相关资源
        最近更新 更多