0install为多个平台编译的程序的示例源文件

时间:2012-06-28 15:35:45

标签: c installation

使用案例:我在Mac,Windows和Linux下编译hello.c,让我们调用三个可执行文件hellomachellowinhellotux并想象它们被打包在一起档案名为hello.zip。现在让我们使用0install分发它们。用户应该能够转到http://www.hello.org/Hello.xml然后0install然后下载hello.zip并提取适合用户平台的二进制文件(例如Linux上的hellotux)。

有没有人有一个示例0install Feed文件,其中包含针对此类情况的必要咒语?我浏览了教程,但无法正确设置必要的XML ...任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

正如Bo在评论中所说,拥有三个zip文件会更有意义,每个平台一个。然后XML列出它们中的每一个,例如

<implementation arch='Linux-i386' ...>
  <archive href='.../hello-linux-i386.zip' size='...'/>
</implementation>
<implementation arch='Windows-i386' ...>
  <archive href='.../hello-win-i386.zip' size='...'/>
</implementation>

您可能会发现这些文档很有用:

但是,如果你确实想要一个包含三个二进制文件的zip(例如,因为你正在为现有的zip存档创建一个源),请使用三个<implementation>元素,这些元素具有相同的<archive>但不同main个属性。确保为每个使用不同的id(默认工具使用实现的哈希作为其ID,但如果它们都是相同的存档则不起作用。)

就个人而言,即使在那种情况下,我也会把大拉链分成三个。

答案 1 :(得分:1)

感谢Thomas和Bo的提示。现在我了解如何逻辑地组合档案。

配方:

为每个平台创建存档。然后使用0publish-gui首先“创建组”,然后针对每个特定于平台的存档重复单击“添加存档”。指定存档的URL但不要下载它,因为已经存在:使用“本地复制”按钮来帮助0publish-gui找出存档大小和SHA摘要。最后将所有内容上传到您的网络服务器。

这是我的简单Hello.xml文件,以帮助其他人入门。 Windows抱怨“XML(11,21)”中的错误,但同样的XML在Linux和Mac OS X下工作。统一赢得2:1: - )

<?xml version="1.0" ?>
<?xml-stylesheet type='text/xsl' href='interface.xsl'?>
<interface uri="http://www.hello.org/Hello.xml" xmlns="http://zero-install.sourceforge.net/2004/injector/interface">
  <name>Hello</name>
  <summary>Hello, world!</summary>
  <description>
Hello, world program</description>
  <homepage>http://www.hello.org</homepage>
  <category>Utility</category>
  <needs-terminal/>
  <group arch="*-*" released="today" version="0.1">
    <implementation arch="Linux-x86_64" id="sha1new=aadb5dca492691888bb5d846f23a2b208a9b7d9e" license="Public Domain" main="hellotux" released="2012-06-29" version="0.1">
      <archive href="http://www.hello.org/hello_tux.zip" size="3298" type="application/zip"/>
    </implementation>
    <implementation arch="MacOSX-x86_64" id="sha1new=8a6c3f898fb938532b4dfd55000507e806524ce7" license="Public Domain" main="hellomac" released="2012-06-29" version="0.1">
    <archive href="http://www.hello.org/hello_mac.zip" size="1637" type="application/zip"/>
  </implementation>
    <implementation arch="Windows-x86_64" id="sha1new=8f8a5cd1aeb4771acaa2017e1054e89d7c11facc" license="Public Domain" main="hello.exe" released="2012-06-29" version="0.1">
    <archive href="http://www.hello.org/hello_win.zip" size="26131" type="application/zip"/>
  </implementation>
  </group>
</interface>
<!-- Base64 Signature (omitted) -->