2008-09-22 32 views
4

我的应用程序通过NSIS安装。存储可写数据的位置,以供所有用户在vista安装程序中共享?

我希望安装程序为所有用户安装该程序。

我可以通过安装到'程序文件'目录来做到这一点。

有一个数据库文件(firebird),系统上的所有用户帐户应共享。

如果我将这个数据库文件存储在'程序文件'目录中,它将是只读的。

如果我将它存储在用户的APPDATA目录中,它们将分别具有不同的副本,当一个用户添加数据时其他用户不会看到它。

选项1 - 在我的应用程序目录下的“程序文件”中创建一个'Data'目录,在我的安装程序中使该目录可以被所有人读写,这样用户的程序文件虚拟化将不会启动,所有用户都可以更新文件并查看彼此的变化。

还有其他的选择吗?

回答

4

所有用户的数据应存储在%ALLUSERSPROFILE%中,或者使用参数CSIDL_COMMON_APPDATA调用SHGetFolderPath()以获取所有用户的存储区域。

查看http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/了解更多详情。

+1

实际上,正确的解决方案是在设置SetShellVarContext all后,在NSIS *中使用$ APPDATA。 – sorin 2010-04-10 20:36:43

3

“所有用户”配置文件下的某个位置将是显而易见的位置。我认为有些规则是默认读/写的,但MS文档建议您是否需要不同的东西来创建子目录并在安装程序中正确设置ACL。

0

具体来说,我会用:

SetShellVarContext all 
SetOutPath $APPDATA 
File "MyInsecurelySharedFile.txt" 

更多信息,请参见NSIS Scripting Reference

相关问题