【问题标题】:Programmatically add application icon to dock on install以编程方式将应用程序图标添加到安装时停靠
【发布时间】:2012-11-07 05:21:41
【问题描述】:

我希望我的应用程序在安装包 (DMG) 后自动添加到 Dock 中?

有人知道怎么做吗?

【问题讨论】:

    标签: macos package dmg


    【解决方案1】:

    有几种方法可以做到这一点,Andrew,这在很大程度上取决于您如何进行应用程序安装。

    如果您使用 PackageMaker 安装您的应用程序,您可以运行“postflight”脚本,将您的应用程序图标添加到 Dock 的“默认值”(即首选项)。 This older MacRumors thread shows how to do that.

    如果您没有使用 PackageMaker,那么您可能必须在您的应用程序中运行一个 Applescript,它执行相同的“默认”写作技巧。 Here's a thread on AskDifferent that shows how.

    在这两种情况下,您都需要关闭扩展坞(或 Finder?)并重新启动它,以便获取并显示更改。

    【讨论】:

    • Michael,我不想在我的应用程序中运行 AppleScript。我想将我的应用程序复制到应用程序文件夹后立即添加到停靠栏。这可能吗?
    • 看看我为什么评论“这取决于你如何安装你的应用程序”?如果这是拖放安装,则没有“触发器”可以从 DMG 自动启动以实现此目的。您必须在您的应用程序中执行停靠图标 Applescript 的操作,或者您需要使用安装程序,然后使用 postflight 脚本技巧。
    【解决方案2】:

    我建议您运行以下 AppleScript 代码,将 myapp 替换为您要添加到 de Dock 的应用程序,包括其路径。

    在下面的示例中,我添加了系统应用程序“系统偏好设置”,但您可以使用自己的路径执行相同操作,只需将应用程序的路径分配给 myapp 变量即可。

     on run
       set myapp to "/Applications/System Preferences.app"
       try
         tell application "Dock" to quit
       end try
       do shell script "defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>" & myapp & "</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'"
       try
         tell application "Dock" to activate
       end try
     end run
    

    这遵循了 Michael 给出的建议,但它应该更温和,因为它只是 退出 Dock,而不是感谢杀死它。

    如果您更喜欢 bash,可以运行以下代码,再次将您自己的应用程序的路径分配给 myapp 变量。

    注意:在 bash 案例中,您必须在指定路径时使用双斜杠,如示例中所示。

    #!/bin/bash
    myapp="//Applications//System Preferences.app"
    defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>$myapp</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
    osascript -e 'tell application "Dock" to quit'
    osascript -e 'tell application "Dock" to activate'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2011-02-19
      • 1970-01-01
      • 2012-01-10
      • 2014-06-25
      相关资源
      最近更新 更多