2017年5月26日金曜日

Inno Setup Compiler 5.5.9 (u)

Windows向けインストーラ作成プログラムの中の一つ、Inno Setup Compilerについて簡単に使い方を説明する。

Free Softwareで、GitHubでソースコードも公開されている。このソースコードそのもののライセンス形態はかなり緩い。変更しても公開する必要に関して言及されていないので、たぶんそのまま持って商用にも使える。ただ、著作権表示に関しては厳密にせよということが書かれている。http://www.jrsoftware.org/

インストール

平成29年5月現在、このソフトのオリジナルサイトからのバイナリは2種類、Unicode対応と非対応のものだ。Inno Setup Helpにある記述によると、Inno Setup 5.3.0からこの形態になった。
これらの内、必要なものをダウンロードする。この時、両方とも欲しいような場合、別なフォルダーにインストールすれば良いらしい。

使い方

平成29年5月現在、バージョン5.5.9において、拡張子 .iss を持つテキストベースのスクリプトファイルに全ての情報を書き込み、Inno Setup Compilerでインストーラを作成する、という流れとなっている。

Inno Setup Compilerを立ち上げ、WelcomeウィンドウのNew fileでCreate a new script file using the Script Wizardを選択すると、簡単に自分用の雛形を作ることが出来る。
単にアプリケーションをインストールするだけならばこれでインストーラを作成できる。

ここで、Wizardのほぼデフォルトの設定で作成されたスクリプトを以下に示す。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{xxxxxxxxxxxxxxxxxxxxx}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\Readme.txt"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

64bitアプリ用の修正

このままでも所定のアプリ、'''MyProg.exe'''をシステムの指定のディレクトリにインストールされる。ただ、x64になってから、デフォルトでは、
 C:\Program Files (x86)
にインストールされてしまう。64bitアプリケーションならば、
 C:\Program Files
にインストールされるべきである。64bitアプリだけインストールしたいのならば、
 DefaultDirName={pf}\{#MyAppName}
の{pf}を{pf64}に変更すれば良い。

Redistributable Packages

古い開発環境で開発されたアプリを最新のOSでの動作をさせようとすると、マイクロソフトがそれように提供している追加のパッケージをインストールしないとランタイム時にエラーを起こしてしまう。そのため、ユーザのためには、予めインストーラで提供できれば良い。そのためには、ディレクティブ、[Files]でそのファイルをどこに出力するかを指定し、[Run]ディレクティブで実行させれば良い。

そのためには、まず、
[Files]
Source: "C:\Users\foo\vcredist_x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall

で{tmp}ディレクトリにvcredist_x64.exeをコピーするように指定する。ちなみにFlagsで処理後には消去指定してある。
そして、
[Run]
Filename: {tmp}\vcredist_x64.exe; Parameters: "/q /norestart"; \
  StatusMsg: "Installing VC++ 2013 Redistributables..."
で実行させることを指定する。

日本語などのメッセージは既にInno Setup 5のディレクトリ内に、Languagesというディレクトリ内部に各言語の.islファイルとして用意されている。これを用いるには、スクリプトの中で、
[Setup]
...
[Languages]
Name: japanese; MessagesFile: compiler:Languages\Japanese.isl

という[Languages]というsectionに追加する。するとインストーラのメッセージを日本語にする事が出来る。

2017年5月25日木曜日

Windows用インストーラー作成ソフト

今更ながらインストーラの必要性を少し感じ、どんなソフトがあるのか調べてみた。ちなみに、Mac OSXでは、スタティックリンクされたアプリであれば、追加するライブラリは、多分無いので、インストーラの必要性を感じていなかった。WindowsではStatic Linkしていても、システム系で互換性のためのファイルがOSのバージョンアップで無くなることがある。

以下に、インストール作成ソフトを挙げてみる。
ただし、Visual Studioの無料版であるExpressやCommunityというバージョンでは、機能拡張が使えないので、これらのソフトはVisual Studio Express系の内部から使うことが出来ないことに注意して欲しい。

InstallShield LE

現在、Visual Studioの公式インストーラのようだ。Visual Studioのプロジェクト追加からこの無料版ソフトをインストール出来る。

Advanced Installer

Free版があり、Microsoft MVP か MCT、もしくはブログなどSNSで宣伝してくれれば無料にする。そのブログなどのURLを知らせる必要がある。

InstallAware

メールアドレスを登録するとFree版がダウンロードできる。

WiX 

Windows Installer XMLの略で、WiX。もともとMicrosoftの開発だったが、現在はちがい、その上、Open Source Projectである。

Inno Setup

無料のソフトで、独自のフォーマットで作成される。 
続く。

2017年5月19日金曜日

両手打ちバックハンドの歴史

朝食の時に、女房とテニスの話をしていて、ふと両手打ちバックハンドっていつくらいからいたんだろう、と言う話が出た。
実際にテレビなどで見た記憶では、男子ではジミー・コナーズ、ビョルン・ボルグ、クリフ・ドライスデール、女子ではクリス・エバートが頭によぎった。
雑誌かなんかで読んだ記憶では、パンチョ・セグラという選手のフォアが両手打ちだった。
で、ちょっと調べてみた。有名なのは、ビビアン・マクグラス。このオーストラリアの男子!選手が両手打ちを有名にしたと言われているようだ。この人は1930年代の人らしい。
どっかのフォーラムによると、1920年代あたりにはものすごく変わった打ち方の人たちがいたらしいので、そのころにも両手打ちの萌芽があったのかもしれない。
ATPのサイトで世界ランキング一位になった人たちのリストを見ると、面白いことが分かる。40年くらい前には両手打ちの選手が少なかったにもかかわらず、コナーズ、ボルグが一位。最近では、両手打ちバックの選手が多いにもかかわらず、フェデラーが長いこと一位だった。今はジョコビッチ、マレーだけど。いずれにせよ、余り両手打ちの選手の一位というのは多くないみたいだ。今後はわからないけど。

2017年3月17日金曜日

ママ友ランチ

最近テニスをやった後、ちょこちょこと昼飯を食べることがある。
久々にコナズ珈琲に行ったら、やたらに赤ちゃん連れが多い。なにこれ、なんかのイベントか?と思うほど。
聞くと、結構多いですよと。まあ、若いママ達が息を抜ければ良いんだけど、そんなにしょっちゅう来てるママが多いとなると、カロリーも心配だけど、なんか、5百円玉を握りしめて、定食屋でサバ定かなんかを食べてるパパたちを思い浮かべて、勝手にすこし切なくなった。

2017年3月10日金曜日

Global Flags

C++でマルチプラットフォームのアプリケーションを開発していて、急にWindowsで終了時にエラーが出るようになった。
ある配列をdeleteする際にエラーが出る。一応、複数回deleteしても大丈夫なような仕組みを入れているので、どっかでHeap領域を越えてアクセスしている可能性が高いかもと思い、なんかツールが無いかと探してみた。
Windows SDK 8.1というのをインストールしてみた。これには、WinDbg.exeやGlobal Flags、Application Verifierというのが含まれている。このうち、Global FlagsとかApplication VerifierというのがHeapのチェックをしてくれるらしい。
Global Flagsを立ち上げて、Image Fileというタブで該当のアプリケーション名を入れて、TABキーを押して、いろいろとチェック項目を入れる。
いろいろやったが、何の問題も見つけられない。終了時だけエラーが出る。
その後、アプリだけ動かそうとして、Explorerからダブルクリックして立ち上げようとすると、
 プログラムxxが開始できません 指定されたファイルが見つかりません
とエラーが出て、立ち上がらない。古いバージョンの同じ名前のアプリも同様。どうなっているのじゃと半分パニックになった。
落ち着いてみると、恐らくアプリの名前でシステム的に何かしているのだろうと思い、使ったアプリ、Global FlagsとApplication Verifierでなんか登録解除の方法が無いかを調べたが全然見つからない。とほほ。
最終的にやっと見つけた方法は、Global FlagsのImage Fileタブで、登録と同じように、アプリ名を入れてTABを押すと、登録されているチェック項目がでてくるので、それらを外して再登録すると元通りになった。
いやぁ、焦った。
でも、最初の問題が解決してないんだよなあ。

2017年1月25日水曜日

Drobo5D 静かになる

我が社のストレージのメイン、Drobo5Dのファンがうるさくて仕方が無い。保証は延長していなかったので、有償でどのくらい掛かるのかPrincetonサポートに聞いてみたら、10万くらいかかるとのこと。あほかい。新品が買えるわ。
仕方が無いので、バラしてみて掃除を試みた。既に先人がいっぱいいるし、歴代MacBookもバラしているし、安心して始めた。
意外に簡単にばらせるが、ファンを取り外すためには、コネクターを外さなければならないのだが、最近ひどくなって来ている老眼のために、コネクターにストッパがあるのか無いのか分からない。無理に引っ張って壊すと怖いので、とりあえずエアーで埃を吹っ飛ばした。
結果、起動したときはうるさかったけど、だんだん静かになってきた。とりあえず、ヨシとしよう。

2017年1月20日金曜日

新しいRAID、Fire!

センチュリーの林檎派・QUADRaider EZがとうとう壊れ、代わりに届いた、Mac周辺機器の老舗、Sonnet TechnologyのFusion QRが届いた。
顔つきなどが似てる感じがしたけど、梱包を解いてびっくり。同じだ。多少のデザイン変更はあるけど、ケースやHDDアダプタなどほとんど同じ。なるほど。秋葉館のラインアップからQUAD Raiderが消えて、どうしたのかと思っていたけど、こういうことなのか。
こんなにはっきり、技術移管が見えたのは珍しい。電源がアダプタータイプになったのは、私のとこと同じようなトラブルが多かったと言うことなのかな。
それで今、急ごしらえのTime Machineディスクからこの新しいRAIDドライブにデータを移動している。3日掛かるらしい。今2日目。USB3.0からThunderbolt->Firewire800なのにこんなに掛かるとは。とほほ。