[リストへもどる]
一括表示
タイトルいじくるつくーるに盾アイコンがつくべき?
記事No2515
投稿日: 2010/07/24(Sat) 23:20:54
投稿者UiUicy
Ayacyさんと久しぶりに会話したいと思いまして書き込みます。(笑)

「いじくるつくーる」とか「すっきり!! デフラグ」はインストーラー製作用にInno setupをつかっています。なおかつ多分管理者権限でインストールすることを想定していると思うのです。

Inno Setupは[Setup]でPrivilegesRequiredを指定しないと、default値のadminになります。5/16の管理人のひとことを拝読すると、多分指定していないと思います。

実際いじくるつくーるをWindows 7でインストール開始すると、昇格確認が出ます。おそらくAyacyさんの思い通りの動きなんだろうなと思うのです。

そこでなんですが、こういう昇格を求めるソフトの場合、アイコンに盾マーク(シールドアイコン)がついていて欲しいと思いません?

色々調べてみると、Inno Setup製のソフトは皆、PrivilegesRequired=adminとしてもシールドがつかないようなんです。

たとえば、rnsf7***_setup.exeのリソースを覘いてみると、<requestedExecutionLevel level="asInvoker"となっています。これをリソースハッカーなどでlevel="RequireAdministrator"に書き換えるとシールドアイコンが出るようになります。

ですから盾を出したい場合、コンパイルしたあとわざわざリソース書き換えをすることになります。これでは煩わしいので、対応策は、Inno SetupインストールフォルダにあるSetupLdr.e32のリソースをlevel="RequireAdministrator"に書き換えておくと、製作物にも反映されます。ただし、あらゆる製作物がlevel="RequireAdministrator"として作られることになるとは思います。

「いじくる」や「すっきり」でlevel="RequireAdministrator"とすると何か不具合が出ますでしょうか? ご検討いただければと思います。

タイトルRe: いじくるつくーるに盾アイコンがつくべき?
記事No2516
投稿日: 2010/07/25(Sun) 03:01:26
投稿者Ayacy
参照先http://www.yoshibaworks.com/ayacy/inasoft/
なるほど。
要約すると、Inno Setup自身に不具合(あるいは制作者に認識がない?)があって、生成されるmanifestリソースのlevel指定がおかしくなっていて盾アイコンが出ない、というわけですね。

Inno Setupの作者がどう考えているか(盾アイコンなど不要と考えているかもしれない)わかりませんが、一般的な常識から考えてみれば、たしかに、盾アイコンが出るのが正常なような気がしますね。

> 「いじくる」や「すっきり」でlevel="RequireAdministrator"とすると何か不具合が出ますでしょうか?

そうですね。私もこれが気になります。
おっしゃるとおり、不具合が出るのかもしれません。一般論になりますが、バイナリファイルを編集してサイズを変えることの危険性があります。

つまり、SetupLdr.e32がバイナリ(?)ファイルになっていて、これを編集した結果の動作保証が得られるか?という話ですね。
バイナリファイルをいじってサイズを変えると、色々なもののアドレス位置が狂って、予期せぬ結果を招くことがあるので。

他人の制作物のバイナリを書き換えたときに「不具合が出ない」ことをどうやったら保証できるか、とても難しい問題だと思います。こうなってくると「盾が出るかどうかの表示上の問題」のためだけに、どこまで危険(?)を冒すことにユーザーが同意してくれるのか?といった話も絡んでくると思います。

逆に言えば、ここの保証さえ得られれば、SetupLdr.e32のリソースを編集しても問題はないだろうと思います。

タイトルRe^2: いじくるつくーるに盾アイコンがつくべき?
記事No2517
投稿日: 2010/07/25(Sun) 08:45:16
投稿者UiUicy
Ayacyさん、お返事いただきありがとうございます。

やはりInno Setupの煮詰めが甘いということだとは思うんです。

スクリプトの[setup]にはPrivilegesRequiredという項目があり、ここでユーザーの最低限の権限を指定できるわけです。そこでadminとかpoweruserとか選べんだら、できればそれに応じたmanifestリソースが自動的に付帯されて欲しいわけですが、それができていないということになります。

SetupLdr.e32あるいはSetup.e32もそうだと思うのですが、このファイルは一種のテンプレート(ひな型)の役目を果たすようです。このファイルのmanifestリソースがそのまま製作したセットアップ用ファイルに反映するんです。たとえば、<requestedExecutionLevel level="asInvoker"の後ろにむやみにスペースが続くのでこれを修正すると、きちんと完成物に反映するのが確認できます。

SetupLdr.e32がテキスト形式のファイルで、読み込まれて反映するだけだたら良かったんですが、Ayacyさんのおっしゃるとおり、バイナリでリソースを改変して保存と言うのは確かに気持ち悪いと思いますね。語学力があれば作者に要望できるのですが(笑)。

せっかくだから、Inno Setupネタでもう1つ。このようなウイザードスタイルの場合、最下段に「戻る」「次へ」「キャンセル」というボタンが並ぶのが普通ですが、戻るのB、次へのNというショートカットキーがあるのにキャンセルには設定がないのが昔から不思議だったんです。Innoに限らないで一般的なことなんです。

http://wisdom.sakura.ne.jp/system/winapi/common/common13.html

リンク先でかかれているような、コツコツとPROPSHEETHEADER構造体でPSH_WIZARDを設定するような既成のインストーラ作成ツールに頼らない方法でもキャンセルにショートカットキーが出来ないので、Windowsの仕様といえばそうなんでしょうし、Escキーがあるだろうといわれればそのとおりではあるんですが、ボタンにショートカットキー名がないのはユーザーに不親切とも思うんですよね。

それでInnoに戻るんですが、[Messages]にButtonCancel=キャンセル(&C)と1行書くだけで、簡単にショートカットキーが設定できるのでラクなんですね。別にCキーでなくても良いし、&抜いてButtonCancel=キャンセル(Esc)とするだけでも初心者に思いやりがある(笑)。これ個人的にヒットだと思ったんで、拙作にも採用したのですが、Ayacyさんもどうですか?

かつて、視覚障碍者に優しいソフト、マウスがなくても操作できるソフトという教えを師匠Ayacyさんからうかがって、心に留めているUiUicyのたわごとでした。

タイトルRe^3: いじくるつくーるに盾アイコンがつくべき?
記事No2518
投稿日: 2010/07/25(Sun) 10:53:28
投稿者Ayacy
参照先http://www.yoshibaworks.com/ayacy/inasoft/
キャンセルボタンのお話なのですが、私はパッと「Escキーがあるだろう」と思ってしまったタチでして…。

キャンセルボタンにはショートカットキーがないというよりは、きっとEscがショートカットキーなのだと思います。なので「キャンセル(Esc)」と書かれるのが正解のような気がしますね。
(たかがキャンセルボタンにスペースを使いすぎ、という批判もあるかもしれませんが...)

話は変わりますが、「OK」「キャンセル」ボタンって、昔は「了解」「取消」ボタンと書かれていたようです。
それが時代の変遷と共に「OK」「キャンセル」ボタンという名前に変わっていったようで。

おそらく、この書き方も多くの同意を得られれば、採用されていくのかな、と思います。
まぁ、ショートカットキー自体、初心者とはあまり縁のない機能ですが、初心者→プロフェッショナルのステップアップの人には、ちょうど良いかもしれませんね。

(もう一つ「OK」ボタンに対して「Enter」が割りあてられているかどうかも、状況により違ってわかりにくいですね)

> かつて、視覚障碍者に優しいソフト、マウスがなくても操作できるソフトという教え

そういえば思い出したのですが、
今でもそうかはわかりませんが、「キャンセル」ボタンの代わりにEscキーが使えるという件は、スクリーンリーダーが読み上げの中で教えてくれるという話を聞いたことがあります。

タイトルRe^4: いじくるつくーるに盾アイコンがつくべき?
記事No2519
投稿日: 2010/07/25(Sun) 13:39:06
投稿者UiUicy
> そういえば思い出したのですが、
> 今でもそうかはわかりませんが、「キャンセル」ボタンの代わりにEscキーが使えるという件は、スクリーンリーダーが読み上げの中で教えてくれるという話を聞いたことがあります。

おもしろそうなので、VectorでFocus Talk体験版を入手してためしてみました。

ウイザードフォームの場合、キャンセルボタンは特にショートカットキーの説明はせず、ショートカットキーを設定した場合には「キャンセルはC」というふうに説明してくれました。一方、OKボタンしかないMessageBoxでは、Ayacyさんのおっしゃるとおり、キャンセルはエスケープキーと確かに教えてくれました。この辺の細かいところは、スクリーンリーダーの各製品によって違うのだろうとは思いますが、なかなか興味深いものがありました。

率直に言って、この音声案内だけで視覚情報無しで操作するのは相当難しいと感じますが、それだけに、できるだけスクリーンリーダーを通しても使いやすいソフトになるように、開発する側は心がけるべきなんだろうなとも感じました。(しかしスクリーンリーダーも結構な値段がするので、その点がネックですね。)

久しぶりにAyacyさんと会話して楽しかったです。これからもよろしくお願いします。