创建桌面快捷方式

所以...对于Ubuntu还是新手。在16.04版本上。
我会尽力用我所了解的计算机知识来解释这个问题。我已经搜索了一段时间,但找不到有效的答案。
我购买了一台电脑,打算升级我的商务电脑。使用Ubuntu是因为经销商已经清除了操作系统。我正在运行DOSbox来运行我的POS系统,并且使用Wine来运行POS系统用于从Dos打印报告的.exe文件。我需要能够通过桌面图标执行这些程序,因为对员工来说,它必须尽可能简单易用。
我的问题是: 所有与该程序相关的文件都是从我的POS文件夹中读写的。 当为我的printer.exe文件创建一个链接图标时,“LINK TO PRINTER.EXE”文件并没有从POS文件夹中读取数据。相反,它要求我配置打印机,就像是第一次启动一样。如果这些打印机是从桌面“链接”进行配置的,DOSbox将无法识别它们,因为我只能假设链接更像是一个副本,而不是指向文件夹内部文件的快捷方式。
当点击Printer.exe时,它会自动用Wine打开,所以我想我可以将图标锁定到启动栏上。但是在关闭应用程序后,图标会变成一个问号,并且无法打开printer.exe。
DOSbox是专门为我的POS系统设计的,所以我在dosbox.conf中使用autoexec行来自动从DOSbox图标启动POS。我想我可以在autoexec行中在"pos"之前加上"printer",这样打印机就会在POS之前自动打开。但是DOSbox告诉我,printer.exe文件无法运行,因为它是一个Win32程序。嗯,printer.exe并不是一个dos程序。我当时在想什么呢?为什么我要打这些字?
有没有办法创建一个指向printer.exe的链接,并将文件路径编辑为指向POS文件夹中的printer.exe文件?我不想给员工一个打开POS文件夹的理由,以免误删了什么东西!
谢谢!

我不确定我完全理解了,所以简单总结一下:如果你从该文件所在的目录运行那个 .exe 文件,一切都好;否则,通过链接运行它就不行了,对吗?嗯,毫不奇怪:Windows 应用程序通常会从运行它的目录读取配置,也就是说,当你从另一个目录运行它时,它看不到配置。有不同的方法来解决这个问题,最简单的方法是创建一个脚本,进入包含 .exe 的目录,然后运行应用程序。另一种方法是创建一个带有 Path= 变量的 .desktop 文件(本质上做的是相同的事)。 - Hi-Angel
但是你正在解决错误的问题,因为如果 POS 目录可以通过链接访问,那么用户也可以访问,即使他们不知道如何到达那里。安全靠模糊性从来都是行不通的。相反,你应该为员工创建一个单独的用户,并将所有权限留给 POS 的所有者/组;而对于"所有用户",只赋予 POS 目录的读/执行权限(不允许写入)。哦,还要确保新用户不属于具有写入访问权限的组。 - Hi-Angel
我并不担心他们能够访问...更多的是我不希望他们不必要地进入那里,以及意外改变了什么。虽然这确实是个好主意!但我得稍后再实施它。 - SegaSaturn
1哦,如果你按下回车键,它就会发布一条评论。我接受了你的建议,并查找了如何创建一个.desktop图标的方法。在我把Exec=/home/user/pos/printer.exe改为Exec=wine /home/user/pos/printer.exe之前,它是不起作用的。虽然这样可以工作,但它实际上不能与POS文件夹中的printer.ini文件一起使用。我想知道为什么它能工作但却无法读取printer.ini。就像你说的那样,我添加了一行Path=/home/user/pos,现在一切都正常了!你真是个天使,安吉尔! - SegaSaturn
1@Hi-Angel,既然楼主说你的解决方案有效,你能写个回答吗? - edwinksl
1个回答

与GNU/Linux应用程序不同,Windows应用程序很少将其配置文件与二进制文件分开(而且,把配置文件放在二进制文件周围的子目录中,并称之为分离,就像把东西紧紧塞进一个橱柜里,用拖把锁上,然后说“房间已经打扫干净了”)。而且它们假设它们是从安装目录运行的,部分原因是因为Windows上的.lnk文件会自动设置基本目录(链接只是一个例子,我并不是要推荐基于.net的语言)。
我脑海中有几个解决方案:
  • 创建一个脚本,可以进入应用程序所在的目录,然后运行它。
  • 搜索特定应用程序的命令行参数,允许设置配置文件所在的目录。然后编写一个脚本,使用该参数运行应用程序。
  • 创建一个带有设置变量Path=.desktop文件,该变量将工作目录设置为运行应用程序的目录。在您提供给员工访问权限的情况下,这可能是列出的方法中最合适的方法,因为它允许设置图标。