我刚刚注意到在 Vista 和 XP 的 AppData 中都安装了 Chromium。如果谷歌这样做,如果其他应用程序这样做,那是因为有某种形式的保护吗?我们应该编写与 Google 做同样事情的安装程序吗?
8 回答
Windows 仍然缺少按用户安装的约定。
- 当安装程序询问是否为当前用户或所有用户安装时,它实际上仅指快捷方式放置(开始菜单;桌面)。实际的应用程序文件仍然在系统范围内
%PROGRAMFILES%
。 - Microsoft 自己的 ClickOnce 通过创建一个完全非标准的
%USERPROFILE%\Local Settings\Apps
(%USERPROFILE%\AppData\Roaming
在 Vista / Server 2008 上)目录来解决此问题,其中包含程序文件和配置数据。
(我不知道为什么微软不能在 Vista 中添加每个用户的 Program Files 目录。例如,在 OS X 中,您可以创建一个~/Applications
,Finder 会给它一个适当的图标。CrossOver 和 Adobe 等应用程序AIR 自动使用它,默认为每个用户的应用程序。因此,没有权限问题。)
您可能应该做什么:如果用户不是管理员,请安装在用户目录中;如果他们这样做,给他们两个选择。
没有人提到的一个优点是静默自动更新。Chrome 有一个始终运行并立即更新您的 chrome 安装的更新程序。
我认为他们的用例是非标准的。他们需要一种方法来尽快修复漏洞问题(因为它是浏览器)。等待管理员批准公司范围内的每一次更新是不够的。
据我所知,Chrome 安装到 Application Data 文件夹的唯一原因是非管理员用户可以安装它。
Chrome 安装程序当前不允许用户选择应用程序的安装位置。不要那样做——相反,让用户在每个用户(如应用数据)和计算机范围(程序文件)安装之间进行选择。
Windows 7 和 Windows Installer 5.0 现在提供真正的按用户安装功能。
http://msdn.microsoft.com/en-us/library/dd408068%28VS.85%29.aspx
您可以在 Vista 和 XP 中使用 ~/AppData/Local 或类似 Chrome 的等效项来对其进行某种修改。Microsoft 自己将其用于 ClickOnce 安装程序。
因此,至少在 Windows 7 及更高版本上,解决方案很简单。
坦率地说,我还没有看到第一个真正允许按用户和按机器安装的安装程序。许多安装程序在其 GUI 中提供此选项,但该设置仅影响快捷方式等的位置——二进制文件始终位于 %ProgramFiles%。
事实上,至少可以说,创建允许两种安装的 Windows 安装程序包是相当困难的。随着 UAC 的出现,我想说这是不可能的:每个用户的安装必须不需要提升,而每个机器的安装必须。但是 MSI 包是否需要提升是通过摘要信息流中的位来控制的——没有办法让用户输入对此产生影响。
每个用户或每台机器是更好的选择,这极大地影响了应用程序。但是,对于小型软件包,我倾向于按用户安装。除了通过不需要 UAC 提示或 runas 来稍微更加用户友好之外,它们还向用户发出信号,表明该设置不会对计算机造成太大伤害(假设他是非管理员)。
除了每个用户之外,Chrome 安装程序确实应该允许全局安装(带有提升)。我不想为每个用户维护一个安装;我希望能够集中管理升级等。Chrome 不允许这样做。
也就是说,按用户安装的选项非常好,因为这意味着没有权限问题。
众所周知,Google 为全球系统安装和管理创建了一个 MSI 安装程序。它位于此处:
我在 Win7 上的 %PROGRAMFILES% 中看不到任何内容。看起来必须为机器上的每个用户安装 Chrome。
也许这样做的真正原因是 Chrome 的安装次数被伪造了几次!从而使其成为世界上第一个浏览器!