我的应用程序目前将文件写入其安装目录,这意味着程序文件不是一个有效的选项(我知道这不是理想的)。但我也希望我的安装程序(Inno)不需要管理员权限,即没有UAC;我想Google Chrome会这样做。
考虑到这两个限制,默认使用哪个公共位置是有意义的?
如果您真的想制作一个不需要管理员权限的每个用户安装程序,正确的设置是:
[Setup]
PrivilegesRequired=lowest
DefaultDirName={userpf}YourAppName
注意(解决Glytzhkof的问题)这是一个本地文件夹,而不是漫游文件夹。如果你想漫游设置,那么你仍然需要你的应用程序将它们保存在(相当于你的语言){userappdata}YourAppName
文件夹中。无论如何,用户将不得不在他们打算使用它的每台机器上分别安装软件(但这通常是最好的选择)。
创建每个用户应用程序的一些缺点是:
安装时不能使用管理员权限。特别是,这意味着您无法安装可能希望在应用程序中使用的许多其他组件(运行时、库等)。你也不能使用像
regserver
和restartreplace
这样的特性。(这并不一定意味着你不能继续使用这些组件,只是如果用户还没有安装它们,这是一个更大的麻烦。)如果一台机器有多个用户(对于家庭和一些工作场所来说很常见),那么他们将有您的应用程序的副本,这些副本必须由每个用户单独升级。这尤其惹恼了IT部门,因为他们更喜欢集中升级,如果你的应用很大,这可能会浪费磁盘空间。
如果您不想创建一个普通的基于{pf}
的应用程序的原因仅仅是您想偷懒并将设置文件存储在程序的文件夹中,那么重新考虑这个决定可能会更好。做到"正确"并不难。
基本上有3种类型的文件:1:用户数据, 2:应用程序设置, 3:二进制文件。还有一些例外。我假设Harry建议将配置和设置文件写入用户的应用程序数据文件夹,而不是整个应用程序。不要在这里存放二进制文件或数据,但一定要在这里保存设置文件。
我认为"漫游文件"的整个概念是一个坏主意。它阻塞您的用户配置文件和增加登录时间在每台计算机上,并导致各种同步问题当人们离开多台机器同时登录数周的时间。在我看来,整个漫游概念仅在理论上有效,但它取决于用户纪律和数据管理中的应用程序质量。很少编辑和合并的文件可以工作,如果应用程序是好的。我已经看到它在拼写检查器、自定义字典和类似的东西上工作得很好。真正的解决方案是使用带有后端数据库的客户机/服务器应用程序来持久化设置。其他一切最终都会失败——如果它是一个轻量级的应用程序,那可能无关紧要。
用户数据应保存到"我的文档"位置仅。只有少数配置设置应该漫游。如果网络设置为允许"我的文档"漫游,应该立即枪毙系统管理员:-)。它必须是可访问的服务器共享,无论用户登录到哪台计算机。
我在这里发飙了,回答了太多你没有问的问题。只是讨厌看到人们面对他们可能不知道的问题。如果你有一个非常小的应用程序,基本上是"可移植的",就像我们在部署中所说的。这意味着您可以在一个应用程序中运行USB棒上的单个文件夹,然后将所有内容保存在用户数据中,并通过单个设置文件和二进制文件保持应用程序的小而轻量级。不需要UAC或管理员权限