注意:我应该提前把这个包括进去。我很清楚这是一个非常糟糕的想法,它没有什么意义,等等。但有时,有些情况是我们无法控制的,迫使我们寻找毫无意义的解决方案。
我们要求将属性文件不做任何更改地放置在 Windows 和 Linux 上,并且包含绝对路径。我知道基本的“/some/path”在两者上都适用,但在 Windows 上,这是基于当前驱动器号的路径。
是否有某种方法可以指定路径,使其能够跨越 Windows 上的驱动器号?
换句话说,如果“/D:/some/path”在 Windows 上有效(但实际上无效),那么该路径可以在 Linux 上创建。有没有类似的东西可以工作?
答案1
这确实行不通。如果您想要在 Windows 中使用绝对路径,则需要驱动器号。Linux 不使用字母,它只使用“/”上的挂载。从应用程序文件夹开始的相对路径是一个更好的主意。
答案2
为什么不为每个目标操作系统设置单独的属性文件?我假设您必须以不同的方式打包您的应用程序(MSI 与 RPM 或类似),那么使用单独的文件有什么害处(可以从单个“基本”文件生成以避免彼此不同步)。
遵循你目标操作系统的配置、日志记录等惯例是一个更好的主意。Linux 有Linux 标准库 (LSB)和文件系统层次标准 (FHS)
对于 Windows,MSDN 上似乎有类似的内容:http://msdn.microsoft.com/en-us/library/cc834998%28v=vs.85%29.aspx
答案3
如果可能,允许文件中的路径是相对的,例如程序的安装目录或类似目录。或者,如果是您自己的代码读取此文件,则可以在路径中允许环境变量,例如$INSTALL_DIR/lib/foo
。然后,您的程序可以在读取此文件之前安排设置$INSTALL_DIR
到适当的目录,或者它可能只是一个魔术标记,用安装目录而不是真正的环境变量替换。
答案4
嗯,这确实取决于你的软件的性质。以下是一些建议。
- 使路径可配置并存储在属性文件中
- 使用 cygwin 并将所有内容存储到 cygwin 目录
- 使用环境变量。
- 编写您自己的文件系统。
- 给你的利益相关者寄一条用报纸包裹的鱼并礼貌地建议他们重新考虑这个愚蠢的要求。
我的意思是这就是我真正能想到的一切。