「MonoMac/外部コマンドを実行する」の版間の差分

ページの作成:「MonoMacで外部コマンドを実行したいことも多いと思う。 ==実装1== Mac OS Xのhdiutilコマンドで暗号化されたdmgファイル...」
 
編集の要約なし
4行目: 4行目:
[[Mac OS X]]のhdiutilコマンドで[[暗号化]]された[[dmgファイル]]を作ってみる。直接的にdmgファイルを生成する[[Cocoa]]の[[API]]はないものかと[[ググった]]が、[[stackoverflow.com]]によると無いようだ。
[[Mac OS X]]のhdiutilコマンドで[[暗号化]]された[[dmgファイル]]を作ってみる。直接的にdmgファイルを生成する[[Cocoa]]の[[API]]はないものかと[[ググった]]が、[[stackoverflow.com]]によると無いようだ。


hdiutilコマンドで暗号化されたdmgファイルを生成する際には[[コマンドプロンプト]]上で[[パスワード]]の入力が求められるが、[[標準入力]]へ[[パイプ]](NSPipe)を渡すことで攻略できる模様。sudoコマンドなどでも確認済み。NSPipeに渡す[[文字列]]の末尾は「\0\n」となる点に注意(「¥」は実際には[[バックスラッシュ]]、[[Mac]]で[[バックスラッシュ]]を打つには「Optionキー」を押しながら「¥キー」を押す)。
hdiutilコマンドで暗号化されたdmgファイルを生成する際には[[コマンドプロンプト]]上で[[パスワード]]の入力が求められるが、[[標準入力]]へ[[パイプ]](NSPipe)を渡すことで攻略できる模様。sudoコマンドなどでも確認済み。NSPipeに渡す[[文字列]]の末尾は「\0\n」となる点に注意(「¥」は実際には[[バックスラッシュ]]、[[Mac]]で[[バックスラッシュ]]を打つには「[[Optionキー]]」を押しながら「¥キー」を押す)。


NSTaskに渡す各種パスは[[相対パス]]ではなく[[絶対パス]]でなければならないようだ。なお、NSTaskで実行する外部コマンドを「/bin/sh -c <実際のコマンド>」として[[シェル]]を経由することで相対パスも利用できるようだが、オススメできるかは知らん。
NSTaskに渡す各種パスは[[相対パス]]ではなく[[絶対パス]]でなければならないようだ。なお、NSTaskで実行する外部コマンドを「/bin/sh -c <実際のコマンド>」として[[シェル]]を経由することで相対パスも利用できるようだが、オススメできるかは知らん。