diffでパッチを作り、別のディレクトリでpatchを適用しようとしたら Permission Denied と言われてしまった。patch --helpと単体で動かそうとしてもダメ。diffはちゃんと動くのになぜ? diff.exeもpatch.exeもcygwin/binの下にあってパーミッションは同じ。エクスプローラから直接patch.exeを実行しようとすると、発行元が分からない云々というようなことを言われる。
かなり困ったのだけど、同様の問題を探したら次のようなものが見つかった。
早速patch.exe.manifestを作成して試すが結果は変わらず。しかしname=やlevel=、version=の部分を色々いじっていたら、いつの間にか通るようになった。うむむ、よく分からん。
どうやら原因はUACが有効の時、ファイル名にinstallやsetup、patchといった文字列を含むものはインストーラの可能性があるということで特別扱いすることにあるらしい。