こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Windows7で動く上書きインストーラの作り方

こんにちは。
インストーラの作り方で悩んでいます。
すでにインストールされているアプリケーションのファイルを一部だけ上書きしたいのですが、うまい方法がみつかりません。

これまでは、ファイルを手作業でコピーしてもらっていたのですが、Windows7になってセキュリティが厳しくなったため、手作業でのコピーができなくなりました。

自分個人のマシンであれば、無理やり管理者権限でコピーすることも可能なのですが、配布先のユーザーさんには技術のない人もいるため、その方法はとれません。

通常であれば、古いバージョンをアンインストールして再インストールということになるのでしょうが、レジストリを消去したくないのです。

そこで、上書きしたいファイルだけのインストーラを作ってみたのですが、上書き対象のファイルのバージョンが同じためか、上書きしてくれません。

いまのところ考えられる方法としては、

・orcaを使って、.msiファイルのREINSTALLプロパティを書き換える。
・上書き対象ファイルをバージョンを変えてビルドしなおす。

という方法がありそうなのですが、どれもスマートな感じがしません。
特に、上書き対象ファイルの変更はなるべく避けたいです。

Setup.iniファイルへの記述などで対処できればよいのですが、なにかよさそうな方法はありませんでしょうか?

現在の開発環境は、インストールするアプリの関係でVS.2003ですが、一応新しいバージョンもそろっていますので、インストーラだけ新しいバージョンのVSで作成することは可能です。

投稿日時 - 2010-12-06 12:36:01

QNo.6366384

困ってます

質問者が選んだベストアンサー

> インストーラの作り方で悩んでいます。

インストーラはどんなツールを使ってお作りになっているのでしょうか。
それに依って答えが全く違ってくるかと思いますが。


http://www.cs-dotnet.com/2009/09/product-installer.html
http://www.cs-dotnet.com/2009/09/more-wix.html
http://www.cs-dotnet.com/windows/installer/


> 通常であれば、古いバージョンをアンインストールして再インストールということになるのでしょうが、レジストリを消去したくないのです。

更新すれば良いかと思います。
保存したいレジストリ項目があれば、アンインストールの前にそれを読み出して保存、旧版をアンインストールした後新版をインストール、そして保存しておいたレジストリ項目を更新という手順で良さそうな気がします。



> 自分個人のマシンであれば、無理やり管理者権限でコピーすることも可能なのですが、配布先のユーザーさんには技術のない人もいるため、その方法はとれません。

同じ方法はbatファイル一つで行なえそうにも感じます。
管理者権限で実行してもらうという事で。

配布は実行ファイル一つ、それをダブルクリックで終了。
自己解凍形式の圧縮ファイルで、中に含まれている更新用バッチファイルを解凍後に自動実行。
バッチファイルでは最初に導入フォルダを探して(更新の必要なファイルと場所)コピーし更新終わったファイルを削除するという感じで。


WiXを使う方法を検討するのも良いのでは。
http://codezine.jp/article/detail/428?p=3

WiXによるアップデート形式のインストーラ作成(上記から連載の6回目)
http://codezine.jp/article/detail/817

投稿日時 - 2010-12-07 22:28:08

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問