如何搭建自己的iPhone Installer软件源

本文简单介绍如何自己搭建iPhone Installer软件源,这样就可以将自己的iPhone软件发布出去让用户直接安装了。仅仅需要你了解一点php知识以及知道如何用文本编辑器编辑xml文件。

下文所说的"iPhone"也同时适用于iPod Touch。

准备工作:
首先,你需要一个支持php的web空间或者web服务器。当然,如果在自己电脑上开一个apache自己测试也是可以的。
接下来,下载这个例子:
http://iphone.nullriver.com/beta/demo.zip
将其解压缩,里面有2个文件和2个目录。
index.php
这个php基本不用编辑,放到你的webserver做为首页就可以了。
repository.plist
这个文件是我们要进行修改的,是标准的plist格式。可以直接用文本编辑器打开。
你可以修改以下内容:

1. <dict>
2. <key>name</key>
3. <string>[你自己的installer源的名称]</string>
4. <key>maintainer</key>
5. <string>[你的名字]</string>
6. <key>contact</key>
7. <string>[你的邮件地址]</string>
8. <key>url</key>
9. <string>[软件源地址]</string>
10. <key>category</key>
11. <string>[分类]</string>
12. </dict>
plists/
这个目录保存的是你准备在源中提供的软件的信息,plists可以包含多个分类,按照目录排列。一个.plist文件包含一个软件。每个分类可以有多个.plist文件。
目录中提供了三个.plist的例子,你可以参考它们的语法。如果不需要这些例子,直接把它们移到别的目录。你可以自己创建包含软件信息.plist文件。
这里的.plist文件主要对软件进行描述,同时在文件中对软件的安装前、安装后、安装过程、更新及卸载进行脚本定义。这样,iPhone中的Installer就可以根据这些.plist文件对软件源中提供的zip包中的内容进行定制的安装了。
这里介绍一下.plist文件中各个key的用法,这样你就可以给自己的软件建立.plist文件了:
* bundleIdentifier 必须键值,唯一软件包描述。一旦你指定了这个键,在今后的软件更新时,千万不要修改。否则会引起软件的混乱。命名有些类似java的domain方式。比如你的软件如果叫做myapp,你可以将自己的软件叫做com.mycompany.iphone.myapp。
* name 必须键值,名称。这个名称将会在Installer的列表中显示。比如你可以写成“我的软件”。
* version 必须键值,版本号。Installer目前只能安装一个特定软件的一个唯一版本。比如你可以写成1.0。
* location 必须键值,安装位置。用于指定本软件的.zip文件位置。如果你希望安装执行文件的话,zip文件压缩的时候,必须在zip中保留文件执行权限,比如0755。比如你可以写成http://iphone.mycompany.com/zips/myapp.zip
* size 必须键值,zip文件的大小。这个数值必须和你的zip文件完全一致,否则Installer不会安装,以防止文件损坏对iPhone造成的伤害。
* url 可选键值,更多信息的链接。.plist文件中如果带有这个地址,用户在Installer中点击More Info就可以直接指向这个地址。比如你可以写成 http://iphone.mycompany.com/myapp/info.html
* description 可选键值,软件描述。注意不要写的太长。
* maintainer 可选键值,第三方维护人员名字。如果软件是你自己的,那就不需要写这项了。
* contact 可选键值,第三方维护人员联系信息。如果软件是你自己的,这项也不需要写。
* restartInstaller 可选键值,安装完成后是否需要重启Installer(注意不是重启iPhone)。这个键值设为true,安装后Installer会自动重启。
* scripts 必须键值,安装脚本。这个键值包括以下项目:
o preflight 可选键值,安装或更新之前执行的脚本。但是在删除软件之前不会执行这段脚本。这个键值主要用于检查软件是否可以进行安装。
o install 必须键值,安装脚本。你需要设定这部分脚本,用以将软件安装在iPhone上。
o update 可选键值,更新脚本。如果软件需要升级,可以在这个键值中定义升级的脚本。这部分脚本可以用于比较大的软件仅仅升级一部分关键程序或者数据时使用。如果没有定义这个键值,Installer会自动使用install中的安装脚本覆盖旧版本的软件。
o postflight 可选键值,安装或更新之后执行的脚本。但是在删除软件之后不会执行这段脚本。
o uninstall 可选键值,软件卸载脚本。虽然是可选键值,但是强烈建议你对这部分脚本进行定义,否则Installer将不会显示uninstall选项,意味着你的软件无法正确卸载。
注意:和脚本相关的键值都是数组的形式出现的。数组的写法是:

CommandName 参数 1 参数 2
1. </pre>
2. <p>&nbsp;</p>
3. <p>CommandName用于执行命令,可以带有任意数量的参数,命令甚至可以嵌套。如果Installer执行到无法识别的命令,将会退出安装并通知用户。</p>
4. <p>比较常用的CommandName有:</p>
5. <p><b>CopyPath&nbsp;</b></p>
6. <p>复制文件。</p>
7. <p>带有两个参数,源文件和目标文件。可以是文件,也可以是目录。如果是目录,Installer会将其下的所有子目录全部复制。</p>
8. <p>源文件如果不指定为绝对路径(前面不带/),Installer会认为这个文件在zip包中。如果指定为绝对路径(前面带/),Installer会认为这个路径是在用户iPhone的文件系统中。</p>
9. <p>目标文件的路径必须是绝对路径。如果你希望复制目录,请不要带上文件名。</p>
10. <p>举例:</p>
11. <p>&nbsp;</p>
12. <pre lang="xml">
13. <array>
14. <string>CopyPath</string>
15. <string>Launcher.app</string>
16. <string>/Applications/Launcher.app</string>
17. </array>
就会将zip包中的Launcher.app整个文件夹复制到iPhone的/Applications/Launcher.app文件夹中。
RemovePath
删除文件。
带有一个参数,即需要删除的文件或者目录。如果需要删除多个不同文件或目录,需要建立多个RemovePath命令。

其他命令请参阅包中的例子。

zips/
这个目录存放软件。软件用zip压缩,主要是保存文件的执行权限。如果你在Mac上编译好myApplication.app,直接压缩即可。如果在Windows上就会比较麻烦。
zip文件名称要和plists中的.plist文件中指定的相应位置对应。
一旦你设置好自己的Installer源,建立好plist文件和zip包,将整个目录包括index.php文件直接上传到服务器,就可以用iPhone添加你自己的源地址进行访问了。关于如何使用Installer添加软件源的方法,这里就不进行介绍了。

英文版
中文原文


返回:

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License