今回で最後だ。結局、Visual Studio InstallerとOrcaによるアップグレードインストーラの作成は敗北に終わった。最後は、市販のインストーラファイル作成ソフトウェアの体験で終わらそう。使用したのは、日本語版をGrapeCityが開発・販売している、WISE for Windows Installerである。
WISE for Windows Installer 5Jには、体験版が用意されている。この体験版は、機能的な制限はなく、30日間に限って評価目的で使用できるというものだ。ちなみに、体験版で作成したインストーラについては、実行時に体験版で作成した旨のメッセージなどが表示されるようになっている。しかしだが、GrapeCityのサイトはなかなか目的の製品が探しにくいぞ。
ちなみに、アップグレードインストーラはものすごく簡単に作成できた。ウソのように簡単である。以下のようにインストールエキスパートを使うことで、項目を埋めていくと最終的にインストーラに必要な情報が集まるようになっている。
アップグレードは簡単だ。古いバージョンのインストーラファイルを読み込ませれば、こんな感じで必要な情報が集まる。
今まで苦しんできたのがウソのようだが、これが市販製品の存在意義なのだろう。
しかし、このWISE for Windows Installerは、Standard版で134,800円(税込み)、Professional版で239,400円(税込み)もするのだ。誰もがいつでも必要とするタイプのソフトウェアではないので、必然的に高い価格が付くのもしようがないようが気がするが、もう少し何とかならんものかなぁ、と思う。もっと希望を絞っていいから、3万円台とかで販売してくれないかしらと思うけど、そういうのはVisual Studio Installerと同程度の機能だったりして。
ちなみに、GrapeCityではInstallAnywhere、InstallStudioも日本語化して扱っているようだ。価格的には、すべて大差ないようだが…。
コメント
Visual Studio Installerでのアップグレードインストーラの作成方法を検索していてここにたどり着きました。
結局は敗北に終わったとのことですが、日本語で作成方法が書かれたページはここしか見つからなかったので、一応同じようにやってみましたがやはりうまくいきませんでした。
しかし、こちらのページに書かれた数々の単語で検索を続け、また米マイクロソフトのサイトを読みあさり(とは言っても私は英語が全くダメなので翻訳ソフトを使いましたが、意味不明文書が出力されました…)、なんとかアップグレードインストーラができたっぽい(?)ので報告いたします。
まずはUpgradeテーブル、これはご存知の通りです。
続いてPropertyテーブル、ここに追加するのはSecurePropertiesではなくSecureCustomProperties。つまり「Custom」が抜けていたようです。そしてもう一つRemovePreviousVersionプロパティを追加し、その値をTRUEとします。
最後にInstallExecuteSequenceテーブルとInstallUISequenceテーブル、追加するFindRelatedProductsアクションはInstallExecuteSequenceテーブルではなくInstallUISequenceテーブルのようです。そのSequenceを1002とし、InstallExecuteSequenceテーブルにはRemoveExistingProductsアクションを追加。そのSequenceは1450。
私はこれで「アプリケーションの追加と削除」にソフトが2つ登録されることがなくなりました。
まっしゅさん、はじめまして。
貴重な情報ありがとうございました。
実際にやってみるのを待っていたので、レスをほっといてゴメンナサイ。
で、私も試させていただきました。
結果、やっぱダメです…。
基本的に前と変わらないんですが、もしかしたらすごい思い違いをしているのかも知れないんです。
というのも、そもそも旧バージョンが認識されないのは変わらないのです。
旧バージョンが認識されないから、それが削除されるわけもなく、二重に登録されてしまうと思うのです。
FindRelatedProductsの実行でUpgradeテーブルが参照されても、旧バージョンを検出できない何かの理由があると踏んでいます。
UpgradeCodeを合わせる以外に、何か気を付けるポイントでもあるんでしょうか。
もし、私が書いたのと違うようにしていようなところがあったら、ぜひ教えて欲しいんです。製品名を同じにしなければならない、とか。
私ももう少し研究してみます。
う~ん…何ででしょう…
意味の無いインストーラになるけど、旧バージョンの *.msi ファイルをコピーして、これを新バージョンと見立ててアップグレードインストールのテストをしてみてはいかがでしょうか。
そのためにまずはコピーした *.msi ファイルの、PropertyテーブルのProductVersionを少し大きな値に変更(私の場合は旧バージョンが 1.1.0.0 だったので 1.1.1.0)し、ProductCodeを変更します。ViewメニューのSummary Informationを開き、PackageCodeを今設定したProductCodeと同じにします。これは、Visual Studio Installer で作成した場合は必ず PackageCode = ProductCode となるためです。
これで新しいバージョンのインストーラになったわけですから、ここからはアップグレードのための設定をしていきます。
Upgradeテーブル
・UpgradeCode…PropertyテーブルのUpgradeCodeと同じにする。
・VersionMin…旧バージョン(私の場合は 1.1.0.0)
・VersionMax…同上
・Language…指定せず
・Attributes…769
・Remove…指定せず
・ActionProperty…OLDAPPFOUND
Propertyテーブル
・SecureCustomProperties…OLDAPPFOUND
・RemovePreviousVersion…TRUE
InstallExecuteSequenceテーブル
・Action…RemoveExistingProducts
・Condition…指定せず
・Sequence…1450(InstallValidate の次、InstallInitialize の前にしました)
InstallUISequenceテーブル
・Action…FindRelatedProducts
・Condition…指定せず
・Sequence…1002(WelcomeForm の次、ProgressForm の前にしました)
>もし、私が書いたのと違うようにしていようなところがあったら、ぜひ教えて欲しいんです。製品名を同じにしなければならない、とか。
製品名を同じにしなければいけないのかどうかは確認していませんが、私の場合は同じにしてあります。
まっしゅさん、たびたびどうもです。
書いていらっしゃるように、旧バージョンのMSIに手を入れて、見かけだけアップグレードインストーラになるようにしてみました。
すると、うまく行くのです。
旧バージョンは削除され、「アプリケーションの追加と削除」に重複して現れることはありません。
PropertyテーブルのProductNameを変更してみて、偽アップグレードインストーラの方のものに変わるので、確かに変わっているでしょう。
とすると、あとは真のアップグレードインストーラの作り方に何か問題があるということですね。
もう一度注意深く作り、結果を報告させていただくことにします。