【问题标题】:What's the simplest way to keep track of where my program is installed?跟踪我的程序安装位置的最简单方法是什么?
【发布时间】:2009-11-15 02:38:46
【问题描述】:
在我处理它时,我已经硬编码了我的应用程序的位置:
public static string MYPROGRAM_PATH = "/path/to/my/workspace";
显然,一旦我打包和分发我的应用程序,这将不起作用。如何跟踪它的安装位置?
我主要关心的是 linux 打包(特别是 .deb),但我计划以此作为练习来了解 Windows 和 Mac 打包,因此欢迎所有提示。
【问题讨论】:
标签:
c#
linux
ubuntu
debian
packaging
【解决方案1】:
有多种方法可以确定 .NET 中的安装/运行位置
Environment.CurrentDirectory
将获取当前工作目录。
如果您已将应用程序安装到 Program Files 中的特定位置,则可以使用:
Environment.SpecialFolder.ProgramFiles;
我几乎肯定还有很多其他方法可以找出当前的运行路径。
在 Linux 方面,我假设这将在 Mono 下运行?如果是这样,我不确定他们如何处理特殊文件夹。
享受吧!
【解决方案2】:
如果您想要程序的 .exe 的路径,至少在 Microsoft 的 .NET 中是 System.Reflection.Assembly.GetExecutingAssembly().Location(或 Path.GetDirectoryName(...),如果您想要目录)
我相信这在 .NET 2.0 或更早版本中就已经存在,因此 Mono 应该在这里兼容(刚刚检查过,它至少包含在 Mono 文档中)。
【解决方案3】:
如果您要将软件打包到一个 deb(或者可能是 rpm)包中,为什么不让该包将您的程序安装在 /usr/bin 中,或者如果您对此不满意,请将其安装在/usr/本地/bin。这样你就不必回答 20 个关于你的程序所在位置的问题了。查看“hier”的手册页以获取有关文件应安装在文件系统上何处的更多详细信息。