我在哪里需要在Windows下安装程序的用户文件夹

时间:2014-01-21 02:23:55

标签: installer windows-installer uac

我为Windows开发了一个应用程序,现在我需要配置安装程序(我使用NSIS)。 该程序有二进制文件,我在C:\Program Files\<My App>\中安装。它还需要user folder,这对用户很重要。此文件夹包含由程序创建的文件,用户可能希望经常使用它们,因此可以轻松访问此文件夹。

我的问题是这个user folder正确位置是什么,它可以满足从XP开始的所有Windows版本拥有和不拥有管理员权限的用户?

我已经读过MS article了。它描述了不同位置的代码,但它没有回答哪个正确的问题。我尝试使用ProgramData文件夹,但事实证明,在Windows 8中默认隐藏了此文件夹。向用户解释如何使其可见似乎不是一个好的用户体验。

2 个答案:

答案 0 :(得分:2)

为什么不在C:\Program Files\<My App>文件夹中创建其他文件夹? 所有用户都拥有必要的权限(读取/执行),您甚至可以指向此文件夹,而无需使用$PROGRAMFILES变量引用驱动器本身:

    SetOutPath $PROGRAMFILES\<My App>\userFolder

如果需要,用户可以从这个地方打开文件。

或者,您可以在root中安装My App程序(在此示例中为C:\)并在其中创建userFolder,然后通过批处理文件更改此文件夹的权限:

    SetOutPath $TEMP
    File "MyBatchFIle.bat"
      FileOpen $4 "$TEMP\MyBatchFIle.bat" w
        FileWrite $4 'icacls "C:\<My App>\userFolder" /grant Users:(OI)(CI)M'
      FileClose $4
    ExecWait "$TEMP\MyBatchFIle.bat"

这将向所有用户授予修改权限。

如果您需要不同的设置,icalcs

,这是一个很好的指南{{1}}

答案 1 :(得分:2)

如果需要存储的文件对于每个用户或ProgramData是不同的,如果所有用户都相同,则正确的位置是APPDATA。如果您需要用户直接添加文件夹,您可以在应用程序快捷方式旁边创建文件夹快捷方式,因此您无需向他们解释如何在默认隐藏文件夹的系统上显示该文件夹。

@Feco 将应用程序文件存储到Program Files文件夹中是不正确的,这是需要管理权限才能写入的位置,因此并非所有用户都可以在那里写入。在Program Files文件夹中,如果需要按机器安装应用程序,则只应安装应用程序二进制文件。如果应该按用户安装应用程序,那么APPDATA文件夹就是那个。

此外,直接在“C:\”(Windows分区根目录)上安装应用程序是一种习惯,而非标准做法。与在Program Files中安装应用程序相比,这没有什么优势,只会导致文件系统与“C:\”上的各种应用程序文件夹混乱。