*.INFファイルを右クリックすると「インストール(I)」てのが 出てきますが、これを使うと
*.INFの書式の参考文献としては Windows NT DDK,2.3.1 INF File Format Reference がかなり良い …が今タダで閲覧できるんかいな
Windows 95 Resource Kit, Appendix, Windows 95 INF Files も参照できるが、 NTDDKのほうが説明が詳しい。
$Id: inf.html,v 1.2 2004/02/13 15:24:11 kabe Exp $
(signature="$Chicago$")
(signature="$Chicago$"でも可能)
addregセクションで
hive,keyname,valuename,0x20000,"%SystemRoot%"他の値は下を参照。
<URL:http://msdn.microsoft.com/library/ddkdoc/ntddk/native/ddk/pg/src/102instl_10.htm> FLG_ADDREG_BINVALUETYPE (0x00000001) FLG_ADDREG_NOCLOBBER (0x00000002) FLG_ADDREG_DELVAL (0x00000004) FLG_ADDREG_APPEND (0x00000008) FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE) FLG_ADDREG_TYPE_SZ (0x00000000) FLG_ADDREG_TYPE_MULTI_SZ (0x00010000) FLG_ADDREG_TYPE_EXPAND_SZ (0x00020000) FLG_ADDREG_TYPE_BINARY (0x00000000 | FLG_ADDREG_BINVALUETYPE) FLG_ADDREG_TYPE_DWORD (0x00010000 | FLG_ADDREG_BINVALUETYPE) FLG_ADDREG_TYPE_NONE (0x00020000 | FLG_ADDREG_BINVALUETYPE)ただしWin95のsetupは0と1 (SZ,BIN)しか理解しない。
ちなみに「インストール(I)」は
値は消えるがサブキーまでは消えないため、完全ではない。 ちゃんとアンインストール専用のDelRegセクションを書くほうがよい。
**あるいは、AddRegの先頭にサブキーだけを書いた行を書いておく。 (AddReg時は意味がないので無視されるが、DelReg時に全部消えるようになる)
[NT] では、[DefaultInstall*]セクションにAddReg行を複数書いてやれば全部実行してくれる。 DelRegも同様。
[95] では最初のAddRegしか実行してくれないようだ。分割不可。
[NT]では、[DefaultInstall.nt], x86NTでは [DefaultInstall.ntx86] が存在していれば、[DefaultInstall]に代わり起動される模様。
[95]では[DefaultInstall]のみか?
<URL:http://msdn.microsoft.com/library/ddkdoc/ntddk/native/ddk/pg/src/102instl_21.htm>
によると、95では".win"が使えるらしい。(未確認)
→だめだった。無印の"DefaultInstall"しか使えない?
*.infはadministrator以外で「インストール」すると
「失敗しました」と言われる。(インストール自体はされている)
[version]signatureと[DefaultInstall]空、でも文句いわれるので相当重症だ。
%systemroot%\INF\に書き込み権限がない(*.PNFが作れない)ため?
ファイルコピーなどは行われている。
→<URL:http://support.microsoft.com/support/kb/articles/Q169/1/23.ASP> RunOnceにGrpConv.exeを書こうとするため、らしい。 問題だとは言っているがNTでは直ってないようだ。(Win2000では?)
(サブキーだけで値なし、REGEDIT4の @="")
[add.reg] HKCU,test\test
サブキーだけで名前も値もなしだとキーだけ作られる。[NT,?95]
まずkey=value全体を(")で囲み、 次に値自体に含まれる(")を("")に変える。(BASIC?)
データとして "W:\hoge" を入れたいときは
....,,"""W:\hoge""" と書く。 (""W:\hoge""ではダメ)
データとしての % は %% と書く。
Binaryとして書くしかないがどっちにしても再現性がなくなる。
UpdateInis=... [...] %10%\IEXPLORE.INI,Services,,"HTTP_Proxy_Server=http://proxy1.server.jp:8080/"の" "を抜くと *.ini に書き込まれない。スペース入ってないのに… (更新時刻は変化するので何かはしようとしたようだ) NTではちゃんと書かれる。
[NT]ではINF自分自身など、*.infと同じディレクトリにあるファイルをコピーするにしても CopyFilesと[DestinationDirs]だけで済むみたいだが、 [95]では
[SourceDisksNames] ;NT doesn't need this 55 = "ディスク名",,1がないとコピーできない。 番号は任意だと思う。ここ以外で55番は使ってなくても必要なのが謎。
(%windir%\INF\ ; NT (とWin98?)にある)
よく分からんが、
http://support.microsoft.com/support/kb/articles/Q193/1/14.asp
↓NT5用infで使える形式?
http://windowsupdate.microsoft.com/nt5help/Server/en/cmak_ops_65.htm
Key names containing blanks Long filenames in INF files What's with duplicate CopyFiles commands? How to modify the uninstall part for Windows NT 4.0 What's HKR?
リソースキットにはdisk-numberしか指定できないような書かれ方になってるが…
NTではfilename=disk-number[,subdir] と書ける。
→使えるみたい。
[copyfile.win] username95.adm は「見つからない」エラーになる。
[copyfile.win] username95.adm=USERNA~1.ADM だと一応入るのだが、username.adm と 8.3に切られてコピーされてしまう。
実際は、%windir%\wininit.ini に書き換えコマンド
[rename] D:\WINDOWS\INF\username95.adm=D:\WINDOWS\INF\username95.001が入るのだが、%windir%\INF には 8.3 でコピーされている。 また、Restart句がなくても再起動を促されるようになってしまう。
「*.infで放り込むのは8.3ファイルにしておいたほうがよい」
ところが [poledit2.win]POLEDIT.EXE,95zak-jp.exeは再起動もかからないんだな。
◆◆リソースキットには何も記述がないが、
◆◆[CopyFiles]file1,file2 だと単純リネームで、
◆◆[CopyFiles]file1=file2 だとwininit.iniに仕込むリネーム? (file1,file2,file3の省略形?)
(file1が8.3に切られてしまうのは変わらない)
[調査済]""でくくるとLFNも使えたりしないか?
→ダメ。[95][copyfile.win]"username95.adm",usernm95.admとしてもusername.admとしてコピーされた。
95で、ネットワークごしに*.infインストールを*.infを修正しながらやっていると、 *.infが更新されたはずなのに古い内容のままのインストール動作をすることがある。 (95側のメモ帳で開くとちゃんと更新されているのでSMBのせいではないような気がする)
DOS再起動をかければ直る。(再ログオンではどうか?)
30 はRoot directory of the boot driveと説明されているが、 実際はsystem drive (NTでは常にC:\)
24 はNTDDKではApplications directory,95では説明なしだが、 NTでは%SystemDrive%になった。[要調査95]
26 はNTDDKでは説明なし、95ではWinbootとなっているが、 NTでは%windir%\system32\unknown\ となった。(なんじゃこりゃ)
00 はinfのあるカレントディレクトリになった。(00,MSIE302は .\MSIE302)
subdirとして%SystemDrive%などと書いても"%SystemDrive%"そのままで展開されない。
10,..\PROGRA~1\MSIE302 (%windir%\..\PROGRA~1\MSIE302) は失敗する。
29は説明なし。%windir%\system32\unknown\になった。 知らんIDはここに格納される?
[NT][95] どうも HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce に物を仕掛けると、 再起動(次回エクスプローラ起動)時ではなく、「インストール(I)」時に実行されてしまう、らしい。 GUIを伴うものは実行できないみたいだが…
同期実行やUIありは RunOnce\Setup か "!"をnameに前置するかみたいなのがあるらしい
たぶんこの機能はsyssetup.dllの機能。普通のインストーラ(MSIEとか)は自動実行しないから。
使える。"%10%"と括っても使える。