我正在为OS X应用程序制作安装程序,但无法理解PackageMaker的UI.我的PackageMaker版本是3.0.4,运行Lion和Xcode 4.1.
特别是一个选项让我感到困惑.编辑包的内容时,它是"包含根目录"复选框.根据是否已选中,我的某些包的内容永远不会安装在任何地方.
例如,假设我的内容是单个.app包,Confused.app.我想将它安装到/Applications(目的地).在这种情况下,"在包中包含root"究竟是什么意思?如果不加以检查,安装程序完全没有做任何事情,据我所见.
是否有更好的示例案例可以澄清选项的含义?
当安装程序(通过 packagemaker 构建)正在运行时......从菜单中,我们可以选择Window > Installer Log然后选择Save它......但这不是所有运行安装程序的人都可以要求的。
安装本身应该是一个无需干预的简单过程。但是,如果出现问题并且我们需要返回并查看日志,那么配置 packagemaker 或它生成的安装程序会很棒......每次运行时都吐出日志文件。
如何做到这一点?
我的PackageMaker项目正在生成.mpkg文件,但是,突然之间,当我进行构建时,它只生成.pkg文件..mpkg文件实际上是我将自定义安装程序包与InstallerSections.plist文件放在一起的目录,用于指定自定义视图应显示的顺序..pkg文件不是目录,我无法将自定义安装程序包添加到其中.
无论如何,由于PackageMaker不再允许我生成.mpkg文件,因此出现了问题.知道为什么会这样吗?还有其他方法我应该接近这个吗?
谢谢.
ps如果您正在考虑建议我应该查看本教程,请不要打扰.这已经过时了.谢谢.
我正在使用PackageMaker作为我的应用程序的安装程序(这不仅仅是一个简单的包).我想知道如何创建卸载程序,在何处安装它以及如何向用户提供启动它的方法.
在此先感谢您的帮助,
我正在尝试使用"脚本结果"要求来检查特定进程是否正在运行,以便我可以在安装开始之前向用户发送消息.我的脚本是一个shell脚本,失败返回1,成功返回0.我遇到的问题是,无论我的返回值如何,安装程序流程都会将其解释为失败.我没有使用一个非常简单的脚本:
#!/bin/bash
echo "script starting">> /tmp/myfile
true
Run Code Online (Sandbox Code Playgroud)
(回声是为了向自己保证脚本实际上正在运行).我已经尝试用很多东西替换最后一行(退出0,退出1,"真","真")但没有任何结果导致测试通过.
我还发现了以下JavaScript代码,当我激活此需求时,它会添加到distribution.dist中.
<installation-check script="pm_install_check();"/>
<script>function pm_install_check() {
if(!(system.run('path/to/script/myscript.sh') == true)) {
my.result.title = 'Title';
my.result.message = 'Message';
my.result.type = 'Fatal';
return false;
}
return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
据我所知,if语句中的表达式永远不会评估为true.所以,我认为这是我的问题.不过,我不知道如何绕过它,因为这段代码是由PackageMaker生成的.
我决定在这种情况下工作,这是PackageMaker中的一个错误,并且接近于解决方法.我没有使用"脚本结果"的要求,而是使用了"Javascript的结果"要求,并构建了一个Javascript函数,看起来像
function my_check() {
code = system.run('path/to/script/myscript.sh');
return code == 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我唯一的问题是,只有当我通过绝对路径指向我的脚本时,这才会起作用.显然,这给安装者带来了问题.
我已经将我的第一个包与PackageMaker放在一起(用于系统服务),但我对几个错误感到不满:
还有其他东西能胜任这项任务吗?免费不是必需的.
我正在使用PackageMaker制作应用程序安装程序,我添加到安装中的一个资源是.app软件包.现在我完成的安装程序正在安装除.app包本身之外的应用程序的所有组件.有谁之前经历过这个吗?如果您需要更多信息,我很乐意提供.
谢谢
安装时如何获取原始*.pkg文件目录?
我创建了一个pkg文件,并将其与另一个文件(如test.txt)放在同一个文件夹中,如〜/ Desktop/test
当安装pkg文件时,我希望它将"test.txt"文件复制到〜/ Library文件夹.所以我将preinstall/postinstall脚本添加到pkg文件中以复制"test.txt"文件.我试着让目录使用
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)
但它将返回tmp目录
/private/tmp/PKInstallSandbox.G5GFI6/Scripts/com.myApp.testApp.pkg.o5k2nE
Run Code Online (Sandbox Code Playgroud)
不是原来的pkg目录 (~/Desktop/test)
安装时有谁知道如何获取原始目录?
我使用的是Mac 10.8和Xcode 4.4.1.我为xcode 4.4.1(Package Maker)安装了Xcode 4.4.1和Auxilium工具的命令行工具.我已将PackageMaker.app放入应用程序文件夹中.我正在寻找Package Maker的命令行工具.我通过网络搜索并找到了一些命令.
/Developer/usr/bin/packagemaker --verbose --doc [project].pmdoc --out [project].pkg mkdir -p dmg
Run Code Online (Sandbox Code Playgroud)
但我无法“/Developer/usr/bin/packagemaker”在我的机器中找到该位置.有什么我错过配置的吗?我也在安装Mac Port.请更新我Mac端口是否有任何选项.请帮我解决这个问题.
我有一个C++代码,我建立在MAC OSX 10.10上的Netbeans(8.0.1)上.
现在我想打包这个二进制文件,所以我使用的是PackageMaker.一旦PackageMaker上的构建完成它要求签名,我点击'允许'.
然后我打开终端并检查包是否签名成功,我得到了:
codesign -v G16.pkg
G16.pkg: code object is not signed at all.
Run Code Online (Sandbox Code Playgroud)
我登录苹果开发者"证书,标识符和配置文件"页面,我有:
在KeyChain中,我在"我的证书"下有1个证书,在"证书"下有6个证书.
所以我的问题是:
请帮我!!!谢谢 :)
已经尝试了很多方法:pkgbuild,productbuild,PackageMaker,Packages应用程序......
我要构建的扁平包的结构:
Distribution - xml script
MacBookPro2011EFIUpdate.pkg - flat package
Resources - resources folder, contains language localizations
Run Code Online (Sandbox Code Playgroud)
扁平包装信息:
id="com.apple.pkg.MacBookPro2011EFIUpdate" version="2.7.0.0.1.1330468277"
Run Code Online (Sandbox Code Playgroud)
例如,我对productbuild的失败:
productbuild: error: Cannot copy package "MacBookPro2011EFIUpdate.pkg" into product.
(Bundle-style package "MacBookPro2011EFIUpdate.pkg" is not supported.)
Run Code Online (Sandbox Code Playgroud)
请尝试从这些文件构建安装程序包:链接
如果成功,请告诉您如何执行此操作!
packagemaker ×11
macos ×9
cocoa ×2
bash ×1
certificate ×1
command-line ×1
installer ×1
objective-c ×1
package ×1
pkg-file ×1
xcode ×1