1

我创建了一个简单的程序,它将目录的路径作为输入,创建该目录的存档(将其转换为单个文件),向该文件添加一个 shebang(以便可以轻松提取文件的内容) ,并将文件写入指定路径的基目录。

问题是当我双击该文件时,它不会自行解压。相反,操作系统(我使用的是 Ubuntu 11.10)尝试使用 gedit 打开它。这显然显示了shebang、随机乱码和存档文件的内容。

我使文件可执行,首先使用chmod +x; 当它仍然不起作用时,我尝试了chmod 777。但是,当我双击它时,它仍然拒绝使用 shebang 执行文件。也许这是因为它不是纯文本文件。

有趣的是,当我尝试直接从命令行执行文件时,它会读取 shebang 并正确提取存档的内容。所以我的文件格式没有问题。当您双击文件时,我不太了解操作系统会做什么,但我很想了解。

如果您仍然需要从命令行手动执行它,那么将 shebang 添加到文件肯定是没有意义的。一个优势可能是您不需要指定打开它的程序,但我相信这几乎不是优势。任何帮助将不胜感激。

更新1:

创建存档的程序称为opm。可以使用以下命令通过节点包管理器安装它:

npm install opm

之后,您只需使用opm为您打包和解压缩目录。例如,如果我的test主目录中有一个名为的目录,那么我可以打开一个终端并执行以下命令来打包它:

opm test

这将创建在test.pack主目录中调用的目录的存档。该.pack文件有 shebang #!/usr/bin/opm.packopm打开一个带有扩展名的文件告诉它它是一个存档,并且opm将它解压缩到同一目录中。

注意:test.pack如果您不希望文件覆盖现有test目录,请更改文件名。

我将shebang添加到.pack文件中,以便在我打开它时它会自行提取。但是,这似乎不起作用。不过,如果我运行以下命令之一,那么它可以工作:

./test.pack

您可以查看我的源代码并根据需要对程序进行任何修改。

更新 2:

好的,我为opm创建了以下.desktop文件并将其存储在目录中:$HOME/.local/share/applications/

[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=OPM
GenericName=Object Packer and Minifier
NoDisplay=true
Comment=JavaScript Package Manager
TryExec=opm
Exec=opm %f
Terminal=false
MimeType=application/opm

现在我可以通过右键单击文件、转到窗口、选项卡并设置为默认应用程序来将.pack文件与opm相关联。现在我可以通过简单地打开文件来解压缩它。.packPropertiesOpen Withopm.desktop.pack

但是我想知道如何将.pack文件与 mime 类型相关联application/opm。目前,这些.pack文件与application/x-java-pack200. 我该怎么做?如果我使用不同的扩展名(例如.opm)会更好吗?通过将打包的档案与 mime 类型相关联,操作系统是否会默认使用opmapplication/opm打开它们,而无需显式设置默认应用程序?Properties > Open With

4

1 回答 1

1

如果已经有一个与 .pack 关联的 MIME 类型,那么您将需要使用不同的扩展名 (.opm) 来与您的 MIME 类型 (application/opm) 关联。自动关联打开特定 MIME 类型文件的程序的方式是使用xdg-mime

或者,

  • 编辑~/.local/share/applications/mimeapps.list并将您的 MIME/应用程序组合放在 [默认应用程序] 下,如下所示:
[Default Applications]
application/opm=opm.desktop;
  • 将您的opm.desktop文件放在~/.local/share/applications/文件夹中。(你已经这样做了)
于 2012-07-05T18:59:38.787 回答