読者です 読者をやめる 読者になる 読者になる

VistaでMinGWとmsysがうまく動かない

mingw

MinGWのg++が動かないという問題と、msysのinstallコマンドが動かないという問題。
VistaにはUAC(ユーザーアカウント制御)というセキュリティの仕組みがあり、その一機能として管理権限の必要なプログラムが実行されると「マジで実行しますか?」的なダイアログが表示されて許可された場合だけ管理権限でプログラムが動くようになっています。
そのあたりの関係かなにかで動きません。

MinGWのg++で『g++: installation problem, cannot exec `cc1plus': No such file or directory』とエラーが出る件


Problems installing MinGW g++/c++ on Windows Vista. "g++: installation problem, cannot exec `cc1plus': No such file or directory"

このサイトを参考に環境変数『PATH』を設定すると動くようになりました。
理由はよくわからないので、kenji君的な人がWizardBibileにUACの詳細と開発者が気をつけるべきことなどを書いてくれることを期待します。
妄想だと、動的リンクしているファイルが怪しい場所にあるから開けないとか。

installコマンドで『sh: /bin/install: Permission denied』とエラーが出る件

これはファイル名に『install』『setup』『update』が含まれる実行ファイルはVistaが勝手に管理者権限で動かそうとするためで、エクスプローラーから実行すると権限昇格の確認ダイアログが表示されますが、shから実行するとエラーがでます。(CreateProcessでエラー? この後に権限を設定する処理が必要?)
対処法としては、アプリケーションマニフェストを書いて、要求実行レベルはasInvokerだと明示するといいらしいですが、設定できませんでした。
試したことは、

  1. 外部アプリケーションマニフェストを書く
  2. Visual C++ 2005 Express付属のmt.exeでアプリケーションマニフェストを実行ファイルに埋め込む

で、1はダメでした。2もダメでしたが、『install-info』コマンドのほうはうまく設定できました。どうも『install.exe』と『installという単語が含まれるファイル名』では動きが違うみたいです。install.exeのほうはどうしても管理権限で動こうとします。

UACを無効しない理由

「この素晴らしいソフトを使うにはあなたのUACを無効にしてください」とreadmeに書くのは嫌なので、UACを有効にした状態でソフトを作ったりしたいからです。
でも理解が足りていないという。