- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在沙箱中有一个应用程序(用于 App Store 部署),需要将一个文件安装到/usr/libexec/cups/filter/中,并将两个文件安装到/private/etc/cups/中。此安装不是定期完成的,而是从 UI 执行时完成的。当要求“完全磁盘访问”或通过其他方式时这可能吗?
var inFilePath = Bundle.main.url(forResource: "thnucups", withExtension: nil, subdirectory: "thnuclnt/x86_64-darwin")!
let inFile: FileHandle? = try! FileHandle(forReadingFrom: inFilePath)
let data = inFile?.readDataToEndOfFile()
inFile?.closeFile()
var destPath = "/usr/libexec/cups/filter/test";
let outFileUrl = URL(fileURLWithPath: destPath)
FileManager.default.createFile(atPath: destPath, contents: nil, attributes: nil)
let outFile: FileHandle? = try! FileHandle(forWritingTo: outFileUrl)
outFile?.write(data!)
outFile?.closeFile()
let outFile: 文件句柄? = 尝试! FileHandle(forWritingTo: outFileUrl) 抛出以下异常:
2019-07-29 15:16:46.985094+0200 适用于 macOS 的 ezeep 连接器 [33450:488523] fatal error :“尝试!”表达式意外引发错误:Error Domain=NSCocoaErrorDomain Code=4“文件“test”不存在。” UserInfo={NSFilePath=/usr/libexec/cups/filter/test,NSUnderlyingError=0x600000c5e610 {Error Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”}}:文件/Users/rwelz/Documents/Develop/PROJEKTE/ThinPrint/in GIT/ThinPrint/EZEEP/Xcode/ezeep Connector for macOS/ezeep Connector for macOS/AppDelegate.swift,第 146 行
<小时/>现在:
let dialog = NSOpenPanel()
dialog.allowsMultipleSelection = false
dialog.canCreateDirectories = false
dialog.canChooseDirectories = true
dialog.canChooseFiles = false
dialog.begin
{ (result) -> Void in
if result == .OK
{
let url = dialog.url
do
{
try data?.write(to: outFileUrl)
}
catch
{
print("Error: Exception caught: " + error.localizedDescription)
}
}
}
我不再遇到异常,但由于/usr/libexec/cups/filter 具有 drwxr-xr-x root 轮(不以 root 身份运行时没有写入的访问权限),我收到“您没有权限”将文件“test”保存在文件夹过滤器中”
我需要以 root 身份运行,这在沙箱中是不允许的。
还有其他想法吗?
问候罗伯特
最佳答案
我决定构建一个 pkg 安装程序,可以从沙盒应用程序中的菜单项将其保存到磁盘。应用程序首次启动时还会提供保存对话框。然后用户必须打开 pkg 并以管理员身份进行身份验证才能开始安装。在 pkg 的 postflight 脚本中,它向应用程序发送一个 apple 事件( osascript -e '告诉应用程序 PATH to start_action' 让应用程序知道它可以继续。
事实上,安装程序将虚拟 ppd 与 cups 过滤器一起安装到/Library/Printers/PPDs/Contents/Resources/中,并且我的应用程序查询此打印机驱动程序的 cups(相应的 ppd)以确保/usr/libexec/cups/filer/my_filter 已安装。
现在让我们看看苹果在审查我的应用程序时对该解决方案的看法;)
关于swift - 如何在沙箱外向/usr/libexec/cups/filter/写入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57255146/
在 RFC8011 p.152 打印机可以有一个常见的状态原因列表。在我的测试中,这个列表似乎非常不完整。是否有更完整的 CUPS 列表? 未列出的打印机状态原因的一些示例: cups 等待作业完成
有没有办法明确告诉 CUPS 服务器您发送的文件是 text/html从而覆盖 mime.types 查找? 最佳答案 就在这里。 使用这个命令行: lp -d printername -o docu
我正在尝试用 Java 做一个编译器,并且使用 CUP 来生成语法的语法。 我有这个 Parser.cup /* Terminals (tokens returned by the scanner).
我想让我的 RasPi 在由三个 Linux 客户端组成的小型家庭网络中充当小型打印和文件服务器。不幸的是,Brother 只提供 x86 的二进制驱动程序,所以我无法在 RasPi 上运行我的 Br
打印作业到 CUPS 服务器时,您可以设置 cupsd.conf 参数 PreserveJobHistory和 PreserveJobFiles控制您要保留的作业数量。 CUPS 始终将实际打印作业文
我正在尝试使用 pip 在隔离 (--no-site-package) virtualenv 中安装 pycups,我得到了这个回溯。我无法弄清楚我做错了什么。有什么想法吗? 谢谢, Download
我正在尝试监听打印机状态变化(例如卡纸、暂停...) 下面的代码给出“Bad notify-recipient-uri”响应,然后锁定 ippReadFile 并且在打印机暂停时不释放/未暂停。 in
如果我在 OSX 中通过普通打印对话框(首选项->打印机)添加打印机,它会显示在列表中。 如果我随后进入 CUPS 并将这台打印机的驱动程序更改为 RAW(这就是我需要的)- 那么我可以这样做,但它会
复古打印机日:我有一台旧的 IbmPro 兼容点阵打印机,通过 USB 并行适配器连接到我的 Ubuntu 20.04 系统。它工作得很好!设置它的一个主要技巧:将 URI 设置为/dev/usb/l
我在使用 CUPS 2.2.7 时遇到了一些问题 这是我的/etc/hosts 文件: 127.0.0.1 example.com 127.0.0.1 localhost 在 http://l
我(几乎)做了一个杯子排序算法,它接受颜色和半径参数,然后吐出按半径长度排列的杯子名称。 示例输入 2 blue 7 10 red 示例输出 red blue 问题是我想创建一个过滤器来检查拆分时第一
成功安装我的杯子打印机Ubuntu18.4。当我单击设备端的添加打印机图标时,它显示名称为“CUPS-BRF-Printer”。我想更改此名称。如何更改默认名称..如何更改? 最佳答案 1º停止CUP
我正在尝试使用戴尔 ppd 打印到戴尔 2350dn。它曾经有效,现在无效,但我很少使用这台打印机,也不知道在此期间发生了什么。 cups 错误日志有: E [07/Feb/2014:16:11:53
如何通过 CUPS API 获取 CUPS 打印作业失败的原因? 使用 CUPS API,我打印了两个未能打印的作业。在 CUPS 网络界面上,我可以看到失败的原因:“不支持的打印数据。”和“无法写入
在本地网络上,在我的 CUPS 管理页面中,当我尝试添加网络打印机时,每台打印机都会出现多次: 例如,Lexmark T644 出现: *Lexmark T644 (2) (Lexmark Lexma
我正在使用 IPP 协议(protocol)与 CUPS 通信。我在 CUPS 中安装了我的打印机的所有驱动程序(使用 .ppd 文件),并且打印机获得了最新的固件。 当我查询打印机正在打印的作业时,
我怎么知道lpr命令 (CUPS) 我的文件实际上是 PDF? lpr file.pdf 不会打印任何东西。 最佳答案 这真的是基于CUPS的lpr ,还是在安装 CUPS 之前没有移除的另一个假脱机
我有两台机器。一个使用 CUPS 1.5.0,另一个使用 CUPS 1.6.1。两台机器位于同一本地网络上。我想要完全发现网络上的打印机。如果我运行以下命令: CUPS_DEBUG_LEVEL=2 /
我在调试 CUP 语法时陷入困境。 所以我在 CUP 中有以下语法: /* Integer operators */ precedence left SUM_OP, SUBS_OP; preceden
有没有办法使用 CUPS 库获取打印机的所有字节命令列表,这些命令应发送到打印机以执行操作。例如:如果我想找出打印机自动剪切功能的字节命令,我可以使用 CUPS 来实现吗?他们有此功能的 API 吗?
我是一名优秀的程序员,十分优秀!