InstallShield Developer Tips


InstallShield Developer 7に関するTipsです



◎VBウィザードでセットアップを作ったがインストールしたプログラムが動かない(2003.1.13)

なぜか、VB専用のウィザードを使っているにもかかわらず、VBのランタイムが入ってないことがある(TT)
そんな時は自分でマージモジュールを足して入れておきましょう。

◎一部のファイルのみ違うファイルに置き換えてセットアップを作成する(2003.1.13)

たとえば、カスタマイズ版のみEXEを他のものと違うものをセットアップに含みたい場合にはリリースフラグを活用すると良い。
「機能」をどんどん増やしていく必要があるが、「リリース」に設定した「リリースフラグ」を「機能」にも指定しておくことでインストーラーに含める内容を切り替えられる。
ただし、これも限りがあって、起動時のスプラッシュや追加と削除のアイコンまでは切り替えることができない。

◎製品構成とリリースの使い分け?(2003.1.13)

リリースウィザード中に出てくる表現だが、具体的にどういう区分にすればいいかいまいちわかりづらい。
自分は、「製品構成」毎に製品コードや製品名、バージョンが指定できるので、「製品構成」には製品版、カスタマイズ版、体験版という感じで登録してある。
「リリース」はリリースする時のメディアを別々に指定できるので、ネットワークイメージやCD-ROMという項目を登録している。
ちなみに、リリースフラグは「製品構成」か「リリース」にカンマ区切りで複数指定できる。

◎内部エラー -2711 機能名(2003.1.13)

「パッケージコードの生成」を「はい」にして、リリースフラグの所に書いていたフラグを製品構成フラグの所にうつしたら直った。
こればっかりは全く謎(笑)

◎急にマージモジュールのビルドに失敗し始めた(2003.1.13)

さっきまでうまくいっていたビルドが失敗する場合、パソコン毎再起動するだけで復活することもある。
自分の環境では一度DCOM95のマージに失敗したので、再起動したところビルド可能になった。

◎アドバタイズ機能は必要無いなら使わない(2003.1.13)

ショートカットがうまく働かなかったり、CDを要求されたりしてしまうので、使わない方が無難(と言い切ってよいのか(笑))

◎マージモジュールは編集できる(2003.1.13)

msmファイルはISで編集が可能。
エクスプローラーなどで該当ファイルをダブルクリックするとISが立ち上がってプロジェクトウィザードが起動する。
適当に設定して中を見てみれば、どういう基準でファイルがインストールされかなどがわかる。

◎DAO3.6マージモジュールがレジストリ登録されない(2003.1.13)

IS7.04付属のDAO3.6のマージモジュールはdao360.dllのレジストリ登録をしてくれない。
msmファイルをISで開いてみると、確かにコンポーネントのファイルを見るとレジストリ登録が有効になっていない。
何か意味があってそうしているのかわからないが、このままでは使えないので、登録するようにチェックし、マージモジュールをビルドし直した。

◎ODBCデータソースを追加するときの注意点(2002.11.17)

ODBCデータソースの追加画面にはツリー形式でドライバとそのDSNが表示されるが、データソースだけではなく、ドライバの部分もチェックを入れてしまった場合は大問題が発生する可能性がある。
(今回はSQLServerのドライバにチェックを入れていた問題が起きました)

ドライバの部分にチェックを入れた場合、アンインストールするとドライバのレジストリまで一緒に消えて、SQLServerに繋がらない、またSQL Serverを入れ直そうと思ったら、インストール中にエラーが発生してインストールできない、という状態にまで陥る。

もし、そうなってしまった場合は、今マシンに入っているMDACより新しいMDACがある場合は、それを入れれば復活する。
しかし、既に最新が入っている場合は、MDACはインストールされないので、この方法では復旧できない。

上記のSQL Serverのドライバを含めたインストーラーを再度インストールしなおすことで、一応復旧はする。
しかし、ODBCデータソースのドライバにはSQLServerの名前は出てこない( = 新規でSQL Server用のDSNを作成できない)
おそらく、この場合、OSの再インストールをしなかぎりはドライバの名前は出てこないと思う。

もし、SQL Serverのドライバをセットアップに含めるならば、パーマネントを「はい」にしておけば、アンインストール時に削除されなくなると思うので、問題は起きないかもしれない(未確認)
でも、インストーラーにドライバまで含めないのが一番のように思う。

◎バージョン7.04で「ファイル」の画面の動きがおかしい(2002.11.17)

どうやら、動作が7.01以前と変わっているようです(バグ?仕様変更?)
今までは、上の画面から追加したいファイルを下の画面にドラッグすれば、「AllOtherComponent」かなんかというコンポーネントが勝手に追加されていたのだが、今回から前回指定した(?)コンポーネントへファイルを追加を行ったという動きになります。
新たなコンポーネントにファイルを追加したい場合は、

この二つの方法をうまく使ってやると良いみたいです。
勘弁してよ(T.T)

◎セットアップでも同じEXEファイルがあると上書きされない(2002.11.3)

EXEファイルのバージョンが既にあるファイルと同じか古くないですか?
もしくは、ビルドが面倒でセットアップのディスクイメージのフォルダ(非圧縮でビルドした場合)に直接新しいEXEを放り込んでないですか?
セットアップの時もファイルバージョンを確認して上書きするかどうかを決めるようですが、どうも媒体に含めたファイルのバージョンはビルド時に確認しているっぽいです。
ちゃんとビルドし直せば、上書きされます。

◎アップデートを作ったが、ファイルが更新されない(2002.11.3)<未解決>

いまだに、この件は未解決。
ナレッジデータベースが更新されていたが、たぶん試してもうまく行かない気がする。
どうも、Windows Installerがベースで動いているので、こっちがどういうときにファイルを更新するか熟知しないとうまく行かない様子である。
しかし、一通りドキュメントを読んで試したのだが、未だに確実にファイルを上書きできていない(T^T)
Install Scriptのコピーコマンドでコピーするのが一番早い気がする。Windowsロゴなんて知ったことか(笑)

◎アイコンが他のソフトのアイコンになる(2002.11.3)

アイコンのキーを変更したら直ったような気がするけど、なんか違うかもしれない。
ナレッジデータベースに詳細が書かれていたので、そこを参照。
やはり、不具合が多いのかナレッジデータベースが頻繁に更新されている(笑)

◎ビルド時に強制終了するようになってしまった(2002.11.3)

Install ScriptでCreateObjectを使ってSQLDMOを操作するソースを書いた後、ビルドするとその後そのプロジェクトは何をやってもビルド中に強制終了するようになってしまった。
このソースを消しても復活せず、結局プロジェクトを新しく作り直してやっと直った。
ちなみに、以下のようなソース(一部抜粋)。

        set objSQLDMO = CreateObject("SQLDMO.SQLServer");
        if (objSQLDMO.Status != 1) then
                objSQLDMO.Start(TRUE,"(local)","sa","");
        endif;
        set objSQLDMO = NOTHING;

◎パスの結合には「^」を使え(2002.8.15)

+は文字列の結合だが、^の方がお利口のようでパス区切り文字の\が足りなかったら足してくれたりするらしい。

◎setup実行時に内部エラー2714(2002.8.15)

その後、「1628:スクリプトベースのインストールを完了できませんでした」と表示される。
インストール先に「../」などのような指定をしているとこうなる。
さらに、ディレクトリエディタのDirectoryの中にゴミは残りっぱなし。これを消さない限りエラーは直らない。
しかし、変な所を消すと余計に問題が大きくなるので注意。

◎FeatureIsItemSelectedで選択していなくてもTRUEが返る(2002.8.15)

FeatureIsItemSelected(MEDIA,"MSDE");
と書いた場合、「機能」のMSDEが他のアイテムにぶら下がる形で登録されている場合、セットアップから機能を外していても、上記の表記ではTRUEが返ってくる。
書き方がまずいのか?
アイテムをどこにもぶら下がらない単独の状態にすれば正しく値が返ってくる。

◎「製品コード」ってなんじゃい(2002.8.15)

これが同じだと同じ製品だとみなされる。
名前をつけて保存を使ってプロジェクトをコピーした場合は、これを変えるのを忘れないようにする。

◎アイコンが他のPGのものになってたりする(2002.8.15)<<不明>>

どうも、アイコン関係はバグありのようだ(Ver7.0.3現在)
アイコン指定の時にEXEではなく、icoファイルを選ぶと問題が解決することが多い。

◎フォームのボタンのキャプションのみが文字化け(2002.8.15)

インストールしたソフトのボタンの文字だけ文字化けする場合、vb6jp.dllが入って無くて、フォントがMS P ゴシックとかだと起きるらしい。
マージモジュールの中のVisual Basic Internationalなんとかというのがあるので、それを入れておくと解決するはず?!

◎リブートした後の処理で製品名が%pと表示される(2002.8.15)

SdProductName(@PRODUCT_NAME);
をRebootイベントの所に入れて、名前を割り当てておくと良い。

◎パッチを作成するとWarning(2002.8.15)

前のパッケージより新しいパッケージの方がバージョン番号を上げておかないと表示される。

◎mspファイルを作るには?(2002.8.15)

標準プロジェクトではなく、基本プロジェクトならできるようだが、標準プロジェクトではupdate.exeが強制的に作成される様子。

◎VBプログラムのインストーラーを作るとInstall Scriptなどが使えない(2002.6.8)

「Visual Basicセットアップを作っているが、どうやってセットアップの動きをかえるかわからん」と引っかかっている人がいるんじゃないだろうか。
起動してすぐの画面に確かにVBのプロジェクトファイルを選んでセットアップを作る機能があるが、これで作られるプロジェクトはMSIプロジェクトの様子。これはInstallShieldの機能を十分に発揮できないプロジェクトでInstall Scriptも使えません。

こういうときは、標準プロジェクトに変換を掛けるか、最初から標準プロジェクトを作って、あとでVBの依存ファイル検索を行うと良い。

◎カスタムダイアログを作成する(2002.6.8)

インストールしたドライブの以下のフォルダにソースがあるので、これを使うらしい。
\Program Files\InstallShield\Developer\Script\isrt\src
A-takは実際にはそこまでしていないので、本当にできるかは分からない(笑)。

◎Developer7の情報のありか(2002.6.8)

Developer7に限らず、InstallShield自体の情報は日本のサイトにはほとんどない(T_T)。
専門的なのと値段が高くて一般ユーザーが買えないからでしょうね。
今のところDeveloper7情報だと米国のInstallShield社のQ&Aが一番充実しているかもしれない

InstallShield のホームページ(日本) ここのナレッジデータベースにはいろいろ情報がある
InstallShield のホームページ(米国) 英語だけどがんばってQ&Aを読もう(TT)
InstallShield ML 結構活発なML。Developer7はぼちぼち使い始めてる人がいるような感じ。E-groupなので過去ログの検索が出来ない(TT)。がんばって一個ずつ読んでいきましょう。

◎インストールはしないが、あるファイルを媒体に入れて使いたい場合(2002.6.8)

たとえばMSDEをセットアップしたいので、msdex86.exeを媒体には入れるが、このファイル自体はインストール先に入れたくない場合。
「機能のカスタマイズ」の「セットアップファイル/ビルボード」を開くと、「Disk1」などのツリーがあるので、そこにファイルを追加する。
マージモジュールでついてくるMSDEは使い方がいまいちわからん(笑)
(DATABASEDIRってドコから値取ってくるのさ?知ってる人いたら教えて欲しい^ ^)
※ちなみに7.0.3ではフォルダも含めることが出来るようになったようです。

◎外部exeの起動(2002.6.8)

基本中の基本ですがね(汗)

たとえば、MSDEのインストール
LaunchAppAndWait("MSDEX86.exe","-a -f1 \"" ^ SourceDir  ^ "\\unattend.iss\"",WAIT);

SourceDirはセットアップexeのあるパスを示すシステム変数。\マークがエスケープ文字。
WAITにすると、exeが終了するのを待って次の処理に移る。
この場合はセットアップ媒体に入れているunattend.issを使ってセットアップするわけです。

◎MDAC2.7マージモジュールをWindows98に入れられない(2002.6.8)

バグっぽいです(笑)
日本の代理店に問い合わせ入れたところ、現象を確認したとのこと。
どうなるかというと、MDAC2.7のインストール条件であるIE4SP2以上+Y2Kパッチ2を当てていても、これらのパッチがあたっていないとエラーが出てインストールが先に進みません。結局、MSのMDACのパッチファイルをEXE起動でインストールするようにして、回避しました。

◎MSDEのインストール先を指定する(2002.6.8)

MSDEマージモジュールの使い方が分からないので、こんな流れにしました。

sdDestAskPathダイアログでインストール先をユーザーに選択させる。
設定ファイルのunattend.issファイルをINSTALLDIRにコピー。
unattend.issファイルのszDir(?)やszDataDir(?)に取得したインストール先を設定。設定にはiniファイルを扱う関数を使う。
MSDEX86.exeをキックさせる時にパラメーターで変更したunattend.issを指定。

◎returnの戻り値って・・・(2002.7.2)<<不確定情報>>

数値しか指定できないようだけど、そういう仕様なのかもしれん。文字列とか返したかったのに、やってみたところエラーで返せませんでした。もし、そうだとするとfunctionの利便性が低いような気がするが。

◎媒体にあるEXEなどを起動するときの注意(2002.7.2)

外部EXEの起動にも関わるが、
LaunchAppAndWait("MSDEX86.exe"・・・
にした場合Win98では動くが、Win2kなどでは動かない
LaunchAppAndWait(SourceDir ^ "MSDEX86.exe"
このようにするのが正しい。当然と言えば当然。

◎インストール、アンインストールの前後にスクリプトを実行する方法(2002.7.2)

スクリプトのエディタの上にある、ドロップダウンをクリックして処理対象の機能を選んで、右のドロップダウンでどのイベントかを選択する。
その中に処理を書くと良い。
わかりにくいのが、左と右の二つのドロップダウンを選んで、初めて関数が新規作成されたり、表示されたりすること。
左のドロップダウンだけ選んでも、右には「Installing」とイベントが表示されているが、右のドロップダウンからInstallingを選び直さないと、その関数にはジャンプしないし、新規作成されない。

◎「変更」時のINSTALLDIR(2002.7.2)

機能の追加、削除の時のシステム変数INSTALLDIRにはちゃんと、インストール先のパスが記録されている。
その他の独自で変数に保持した値はインストールが終わると破棄されるので、機能の追加、削除時には空っぽになっている。

◎パスに気を付けろ(2002.7.2)

ファイルをどこかから追加すると、パスの表記を選択する画面が表示されるが、それが時折間違っている時がある。
ちゃんと確認しないと、セットアップ作成時にファイルのシステム情報が取得できないとかいうエラーが出てセットアップが出来ない。

◎「すべてのファイルを圧縮する」にするとセットアップが出来ない[ver7.0.1](2002.7.2)

リリースの設定で表題の設定を行い、CD-ROM媒体用のインストーラーを作成しようとするとエラーが発生。
これは、7.0.1のバグで、7.0.3では修正されている様子。
http://support.installshield.com/kb/view.asp?pcode=WIND700E&articleid=Q105438


 

[Tips一覧に戻る][TOPへ戻る]