[英]How to create a Mac OS .app bundle with Chef Omnibus in DMG installer
我对Mac OS的了解非常有限,并且有几个与DMG安装程序有关的问题。
我们有一个可以在Windows,Mac和Ubuntu上运行的应用程序。 我们使用Chef Omnibus为所有三个OS生成安装程序。
我们的DMG安装程序有点基础,但可以正常工作,即我们的应用程序已按需安装。 但是,对于我们的用户而言,启动应用程序并非易事-他们需要去寻找安装文件夹,并自行找到启动.sh文件并运行它。
从到目前为止的经验来看,Mac OS捆绑包.app可以帮助我们实现这一目标。 但是,在Omnibus安装程序创建过程中,我找不到有关如何创建捆绑软件的任何信息。 我可以看到,捆绑包是遵循特定结构的文件夹和文件的集合:
我发现创建捆绑包的最简单方法是使用xCode编辑器,但这不是我们的选择。 我们会在CI流程中自动创建安装程序,因此我们希望保持这种方式,因为它非常高效且可靠。 最好的办法是以某种方式扩展Omnibus流程,以便我们也可以获取此捆绑文件。 但是,在这一点上,我什至不确定是否可行。
我真的被困住了,所以我很感激任何指针。
这是我们的distribution.xml文件,在与该问题相关的情况下可供参考。 Omnibus将其用于productbuild命令。 我一直在研究扩展此功能的选项,但与捆绑包没有任何关系:
<?xml version="1.0" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<title><%= friendly_name %></title>
<background file="background.png" alignment="bottomleft" mime-
type="image/png"/>
<welcome file="welcome.html" mime-type="text/html"/>
<license file="license.html" mime-type="text/html"/>
<!-- Generated by productbuild - - synthesize -->
<pkg-ref id="<%= identifier %>"/>
<options customize="never" require-scripts="false"/>
<choices-outline>
<line choice="default">
<line choice="<%= identifier %>"/>
</line>
</choices-outline>
<choice id="default"/>
<choice id="<%= identifier %>" visible="false">
<pkg-ref id="<%= identifier %>"/>
</choice>
<pkg-ref id="<%= identifier %>" version="<%= version %>"
onConclusion="none"><%= component_pkg %></pkg-ref>
<domains enable_anywhere="false" enable_currentUserHome="true"
enable_localSystem="false" />
</installer-gui-script>
我们的应用程序已经安装
听起来确实需要为发行版生成一个.app
。
.app
是一种特殊的文件夹结构:
MyApp.app/
Contents/
Info.plist
MacOS/
executable
Frameworks/
library.dylib
Resources/
icon.icns
Frameworks/
库应使用install_name_tool
链接到executable
例如,
install_name_tool -change /opt/local/lib/library.dylib @rpath/library.dylib MyApp.app/Contents/MacOS/executable
install_name_tool -add_rpath @executable_path/../Frameworks MyApp.app/Contents/MacOS/executable
大多数其他内容都可以归类为资源,除Contents/
文件夹外,没有其他内容可以进入应用程序的顶层。 当应用程序完成并完全捆绑时,您可以进行代码codesign
。
回到其他软件时,使用.app
创建.dmg
,然后可以对其进行代码codesign
。
在典型的.dmg
安装中,通常会向用户显示该应用程序和/ Applications文件夹的别名。 要安装,用户将应用程序拖动到/ Applications文件夹。
某些.dmg
创建软件将执行更复杂的功能,例如显示背景或需要最终用户许可协议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.