2007-06-11

Vista上でCygwinのpatch.exeが動かない

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といった文字列を含むものはインストーラの可能性があるということで特別扱いすることにあるらしい。