含まれているすべてのフォルダーで読み取り専用のアクセス許可を持つアプリケーション (MyApp.app) を削除する必要があります。削除する前に、含まれているすべてのファイル/ディレクトリのアクセス許可を 0644 に変更する必要があります。これを再帰的に行うにはどうすればよいですか?
私はもう試した
begin; FileUtils.chmod(0644, '#{config.appPath}'); rescue; end
begin; FileUtils.rm_r('#{config.appPath}'); rescue; end
しかし、FileUtils.chmod
再帰的には機能しません。Unix コマンドを使用できません。Ruby でなければなりません。
編集: 現在のコンテキストでは Unix コマンドを使用できません。OK、これは RubyCocoa アプリケーションであり、表示されるソースはアプリケーションをアンインストールすることになっている ruby スクリプトの一部です (これについてはコメントしないでください。これは私の顧客が持っているコードです)。アンインストールには、アプリケーションの痕跡をすべて削除し、プロセスを強制終了し、最後にアプリケーション自体を削除することが含まれます。通常は機能しますが、何らかの理由で MyApp.app フォルダーが読み取り専用のアクセス許可を取得する場合は機能しません。そのため、フォルダーで chmod を再帰的に実行して削除することを考えましたが、何らかの理由で Ruby では簡単ではありません。それが私が助けを求めている理由です。コマンドラインから実行する方法の例はたくさんありますが、コードからどのように実行するのでしょうか?
実装方法を示すために、コードの一部を次に示します。
code =<<FOO
require 'fileutils'
# kill the app before deleting files in case it writes files on exit
%x{/bin/kill -9 #{NSProcessInfo.processInfo.processIdentifier}}
begin; FileUtils.chmod(0644, '#{TBConfig.appPath}'); rescue; end
begin; FileUtils.rm_r('#{TBConfig.appPath}'); rescue; end
FOO
ff = Tempfile.new('timebridge')
ff.write(code)
ff.close
%x{/usr/bin/ruby #{ff.path}}
再度、感謝します。