OS X上的代码签名应用程序包与Install4j 6,密封资源丢失或无效

时间:2015-07-01 16:29:12

标签: macos code-signing install4j

我在使用Install4j 6为OS X生成已签名的应用程序包时遇到了麻烦。我已阅读http://blog.ej-technologies.com/2014/09/the-v2-signature-scheme-for-application.html上的博客条目,这让我相信无法创建已签名的安装程序应用程序(我的客户端需要几个步骤,包括同意许可证),以安装已签名的应用程序。

示例:

  1. 用户下载MyApplication.dmg
  2. 用户在Finder中安装并点击"安装MyApplication.app"
  3. 用户遵循安装程序和应用程序包中的说明,最终在/Application/MyApplication.app
  4. 这里的问题是,如果我使用单捆绑安装程序,只需要安装MyApplication.app' (安装程序)已签名。我可以用spctl验证这一点。

    $ spctl -a  -v /Applications/My\ Application.app
    /Applications/My Application.app: rejected
    source=no usable signature
    

    问题是,应用程序包本身没有签名,而且我得到了令人讨厌的防火墙弹出窗口,因为应用程序必须打开TCP端口。

    $ spctl -a  -v /Applications/My\ Application.app
    /Applications/My Application.app: a sealed resource is missing or invalid
    

    所以我所做的就是将其转换为 Single Bundle Archive 。然后我做的是打开DMG,并将MyApplication.app拖到/ Applications文件夹中。但是spctl仍然抱怨:

    <?php
    public function ajax_action() {
        // set data used in the element
        $this->set('data', array('a'=>123, 'b'=>456, 'd'=>678));
    
        // disable layout template
        $this->layout = 'ajax';
    
        // render!
        $this->render('/Elements/some_element');
    }
    

    有人能指出我正确的方向吗?我该如何解决这个问题?是否完全不可能拥有一个签名的安装程序(即带有GUI向导的东西)来提取已签名的应用程序包?为什么在安装时需要修改捆绑包呢?

1 个答案:

答案 0 :(得分:1)

  

这里的问题是,如果我使用单捆绑安装程序,只有&gt;&#39;安装MyApplication.app&#39; (安装程序)已签名

这是正确的。从技术上讲,这是不可能的,因为在包含的目录(.install4j)中有变量运行时文件会破坏签名。我们今天不会添加此媒体文件类型,但我们显然无法将其删除。

它将通过网守,但如果您需要已签名的应用程序包,则必须使用单个包存档或文件夹安装程序。

  

所以我所做的就是将其转换为Single Bundle Archive。然后我做的是&gt;打开DMG,然后将MyApplication.app拖到/ Applications文件夹中。 &gt;但是spctl仍抱怨:

这不应该发生。某些东西必须修改过它们之间的文件。尝试签署一个不同的安装程序,如&#34; hello world&#34;抽样并检查那种情况会发生什么。