- PR -

MSIサイレントインストールについて

1
投稿者投稿内容
penpen
常連さん
会議室デビュー日: 2006/01/19
投稿数: 22
投稿日時: 2007-06-11 22:51
いつもお世話になっております。 

Visual Studio .NET 2003にて、インストーラを作成しております。

作っているインストーラには、ユーザーインターフェース(テキストボックスA、テキストボックスB、チェックボックスAなど)を追加したり、カスタム動作を設定しています。

ここからがご教授いただきたいのですが、サイレントインストールも行えるようにしようとしているのですが、追加したユーザーインターフェースのテキストボックスAやテキストボックスBのプロパティに、サイレントインストール実行時に指定した引数を値としてプロパティにセットさせたいのですが、どのようにしたらよいのでしょうか。

MSIファイル編集ツール Orcaを使えばどうにかできるのかといろいろ試しているのですが、いまだうまくいっておりません。

どなたかご存じの方おりましたらご教授ください。

よろしくお願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-06-12 11:39
引用:

penpenさんの書き込み (2007-06-11 22:51) より:

ここからがご教授いただきたいのですが、サイレントインストールも行えるようにしようとしているのですが、追加したユーザーインターフェースのテキストボックスAやテキストボックスBのプロパティに、サイレントインストール実行時に指定した引数を値としてプロパティにセットさせたいのですが、どのようにしたらよいのでしょうか。



プロパティが全部大文字であるのならば、
msiexec /i Hoge.msi /qn EDITA=データ
などとすることで、プロパティを事前に初期化してそれをインストールデータとしてつかえます。

ただし、VSのセットアップは、途中で昇格するパターンでのインストールにきちんと対応できていませんので
Vista でも動作させる場合は、
UIや起動引数から、受け取るものを別途ORCAなどで SecureCustomProperties に設定する必要があります。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
penpen
常連さん
会議室デビュー日: 2006/01/19
投稿数: 22
投稿日時: 2007-06-12 15:42
とっちゃん様

ご返答ありがとうございます。

早速試させて頂きました。
msiexec /i Setup1.msi /qn EDITA1=11111 で試したところ EDITA1に値がセット出来ていないようでした。

セットできていないというのは、カスタム動作(CustomActionData)に EDITA1 を指定してDLL側(VB.Netで作成したDLL)で表示させたところ空のままなのです。
CustomActionData = [EDITA1]

ORCAで、SecureCustomPropertiesを何かしら追加・修正を行う必要があるのでしょうか?

よろしくお願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-06-12 17:22
通常インストールで、ダイアログから入力した値はカスタム動作で受け取れていますか?
そこがクリアできていないと、サイレントインストールもクリアできないのですが?

カスタム動作に限って言えば、サイレントインストールと通常のインストールの違いは、UIがでるかどうかだけです。

ですので、まずは、通常のUIありの場合で受け取れていないかぎり、起動パラメータ経由での受け取りもできません。

そちらを確認していただけますか。
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
penpen
常連さん
会議室デビュー日: 2006/01/19
投稿数: 22
投稿日時: 2007-06-12 17:25
とっちゃん様

ご返答ありがとうございます。

通常インストールを行った際は、ダイアログから入力した値がカスタム動作側で受け取って正常に表示されています。

よろしくお願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-06-12 17:56
引用:

penpenさんの書き込み (2007-06-12 17:25) より:

通常インストールを行った際は、ダイアログから入力した値がカスタム動作側で受け取って正常に表示されています。


とすると、なんだろう?
スペルが違っているなどはないですよね?

カスタム動作の CustomActionData プロパティの内容と、サイレントインストール実行時のコマンドラインパラメータと、実行OSを教えていただけますか?

それと、/qn をつけずに呼び出した場合にどうなるかも。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-06-12 18:06
原因わかりました。VS2005のやつなのでもしかしたらちがっているかもしれませんが、
プロパティ値をリセットするカスタムアクションがくみこまれていました。

ORCAで、msiをひらいて、CustomAction テーブルをさんしょうすると、
CustomTextA_SetProperty_EDIT1 という名前(か同じような名前)のカスタムアクションがありませんか?

もし、それがあるようでしたら、InstallExecuteSequence にいる筈ですので、削除してみてください。

おそらくそれでとりあえずは意図したとおりに動作すると思います。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
penpen
常連さん
会議室デビュー日: 2006/01/19
投稿数: 22
投稿日時: 2007-06-12 18:26
とっちゃん様

ご返答ありがとうございます。

CustomActionテーブルからご指示いただいたCustomTextA_SetProperty_EDIT1を削除しましたところうまくいきました。

ご協力ありがとうございました。
とても助かりました。

今後ともよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)