我想在安装程序中禁用"更改安装位置..."按钮(下面的屏幕截图).我正在尝试使用macOSX 10.8上的pkgbuild和productbuild创建安装程序.首先,我使用pkgbuild创建两个.pkg文件.
pkgbuild --root myApp --component-plist myApp.plist --scripts appScripts --identifier com.myapp.coreapp --version 1.0.00 --install-location /Applications --ownership preserve
pkgbuild --root myBr --component-plist myBr.plist --scripts brScripts --identifier com.myapp.browser --version 1.0.00 --install-location /Library/Internet\ Plug-Ins --ownership preserve
Run Code Online (Sandbox Code Playgroud)
在上面的plists中,我使用的BundleIsRelocatable是假的.
然后我使用productbuild来创建最终的安装程序包.
productbuild --distribution dist.xml --resources res inst.pkg
Run Code Online (Sandbox Code Playgroud)
在dist.xml,我已经尝试了所有组合domains也rootVolumeOnly,但我仍然不能禁用"更改安装位置..."按钮.
有人可以帮忙吗?非常感谢.

使用案例:我以" user1 " 身份登录并启动Safari,然后点击右上角的" user1 "并将用户切换为" user2 ".现在,我正在尝试检测Safari是否正在运行" user1 ",但我无法使用标准调用.我使用OS X 10.8 Mountain Lion来开发和运行我的代码.
我使用了以下但是徒劳无功:
[[NSWorkspace sharedWorkspace] runningApplications] - 列表中没有SafariGetNextProcess() - Safari没有出现GetProcessForPID() - 我收到错误"没有这样的过程"但是当我ps -aef | grep Safari从终端做一个时,我可以看到Safari.(这不仅适用于Safari,也适用于其他应用程序.)
有人可以请帮助.非常感谢你.
macos objective-c switch-user nsworkspace nsrunningapplication
场景是这样的:"我从一个用户运行一个app(比如myproc)然后快速用户切换到第二个用户"
现在,当我尝试确定所有使用特定束标识符运行的进程时(比如com.ak.myproc) ; 我无法确定从第一个用户运行的进程.
我尝试过以下但是徒劳无功:
[NSRunningApplication runningApplicationsWithBundleIdentifier:][[NSWorkspace sharedWorkspace] runningApplications] 然后比较每个应用程序的包标识符 - 为第一个用户运行的应用程序甚至不显示在此列表中.sysctl()然后迭代进程列表 - 这里,来自第一个用户的应用程序的pid确实来了.之后:
[NSRunningApplication runningApplicationWithProcessIdentifier:],我没有.GetProcessForPID()跟着时ProcessInformationCopyDictionary(),我得到一个零字典.GetProcessForPID()跟着时GetProcessInformation(),我没有得到任何有用的东西ProcessInfoRec.有人可以帮忙吗?谢谢.
操作系统:Mac OS X 10.8.4
Xcode:4.6.2
macos sysctl cfbundleidentifier nsworkspace nsrunningapplication