Installation 为什么';不要用巧克力糖将软件包安装到'C:\Program Files\`?

Installation 为什么';不要用巧克力糖将软件包安装到'C:\Program Files\`?,installation,directory,package,chocolatey,Installation,Directory,Package,Chocolatey,根据Windows安装规则,程序应安装到 C:\Program Files(64位程序/x86-64)或C:\Program Files(x86)(32位程序/x86)。程序被复制到包含供应商名称和程序名称的子文件夹中 但是为什么Chocolate不将软件包安装到C:\ProgramFiles\\\ 10。默认情况下,应用程序必须安装到正确的文件夹中 用户应该对文件的默认安装位置具有一致且安全的体验,同时保留在其选择的位置安装应用程序的选项。还需要将应用程序数据存储在正确的位置,以允许多人使用同

根据Windows安装规则,程序应安装到
C:\Program Files
(64位程序/x86-64)或
C:\Program Files(x86)
(32位程序/x86)。程序被复制到包含供应商名称和程序名称的子文件夹中

但是为什么Chocolate不将软件包安装到
C:\ProgramFiles\\\

10。默认情况下,应用程序必须安装到正确的文件夹中
用户应该对文件的默认安装位置具有一致且安全的体验,同时保留在其选择的位置安装应用程序的选项。还需要将应用程序数据存储在正确的位置,以允许多人使用同一台计算机,而不会损坏或覆盖彼此的数据和设置。Windows在文件系统中提供特定位置,用于存储程序和软件组件、共享应用程序数据以及特定于用户的应用程序数据

10.1默认情况下,您的应用程序必须安装在Program Files文件夹中
适用于%ProgramFiles%中的本机32位和64位应用程序,以及适用于在x64上运行的32位应用程序的%ProgramFiles(x86)%。由于为此文件夹配置了安全权限,因此用户数据或应用程序数据决不能存储在此位置

来源:

版本:10(2015年7月29日)

这取决于您的巧克力版本、设置和包装本身

首先,请参见工具与应用程序以及巧克力的区别( 在 底部)

如果软件包不使用本机安装程序(工具),则取决于 如果包作者使用了bin_root概念,则 未来的版本

例如,系统内部将立即转到
c:/SysInternals
,除非 您有一个已定义的
$env:chocolate\u bin\u root
变量。中的概念 代码现在也会改变,这要求它是一个 系统驱动器的子文件夹,我看不到我们正在开发最终版本 具有该限制的特征

如果软件包还没有这个概念,你可以问 包作者合并它

如果软件包使用本机安装程序(应用程序),则可以使用
installArgs
将参数传递给本机安装程序 ()及 告诉它安装应用程序的目录。这确实需要 您需要知道需要传递给本机安装程序的内容。如果你愿意 您的应用程序位于自定义目录中,假设 您已经是高级用户,因此希望您知道 如果您正在进行静默安装,则传递安装程序的内容

略作转述:

而且

注意:从0.9.8.24开始,Chocolate的默认安装位置为
C:\ProgramData\Chocolate

这减少了局部安装巧克力的攻击面 并限制可以对目录进行更改的用户

资料来源:

从个人经验来看,我可以证明,这一概念是一道极好的防线(如果配置、使用和理解得当)

附言:
正如您已经在回答中添加的,从技术上讲,要求是
%ProgramFiles%
%ProgramFiles(x86)%
环境变量(如适用)。
例如,
%ProgramFiles(x86)%
也可以指向
P:\Software\Programs\x86\
(而不是
C:\ProgramFiles(x86)\
)。
显然有很多遗留软件(现在(重新)打包)从未在路径名中使用过
部分


希望这有帮助

对于
-零件,没有刻在石头上的规则。甚至根本就没有一条安装的规则(尽管windows的更高版本似乎强制执行了一些疯狂的东西)。唯一的“规则”是默认安装目录的建议使用environment programfiles变量(特别是在不允许用户选择安装位置的情况下)。有些程序(讽刺的是,像LearnKey stuff和Asus Probe)打破了这一规则,并对路径进行了硬编码。就我个人而言,如果我不能在E:/games/中安装我的游戏,我会非常生气。在E:/Programs/。@GitaarLAB实际上,有微软编写的认证要求,比如说默认情况下在哪里安装应用程序。这并不意味着,您可以更改安装程序GUI中的目录,或者通过参数选择另一个硬盘。很抱歉,我找不到Windows 8.x之前版本的“桌面应用”的文档版本。我确信
\
有一个规则。对你的问题有很好的补充!(您可能希望添加Chocolate软件包为不知道该程序的人使用的目录结构)。但我还是坚持我的评论(不是回答):我的电脑上安装的90%(超过500个)的程序没有供应商部分(我通常不会弄乱那个部分;我只是验证它不是一个简单的硬编码不符合规范的安装程序(实际上很少见))。您在问题中添加的有关认证要求的引号中的关键词是“默认”和
%ProgramFiles%
,以及
%ProgramFiles(x86)%
(这就是我所评论的)。但如果认证要求中确实包含
的书面“要求”,我不会感到惊讶(因此,通过简单的一行文字排除了绝大多数(遗留)应用程序)……但您似乎更感兴趣的是,在巧克力的情况下,programfiles环境变量之后会发生什么。我还想问一下,这是否(如果是,那么为什么)对您很重要?“包”与“应用程序”的区别-我认为它已经被突出显示了,但是软件包不一定是本机安装的应用程序,它们只是引导那些应用程序。本机安装的应用程序