[ Samba ]
!==
!== PRINTER_DRIVER.txt for Samba release 2.0.7 26 Apr 2000
!==
==========================================================================
	共有 PRINTER$ のサポート
 
 	Jean-Francois.Micouleau@utc.fr, 10/26/97
	modified by herb@sgi.com 1/2/98

	訳出: nakano@apm.seikei.ac.jp 7/4/98

===========================================================================
お断り:
	この文書の内容は Windows 95 で *のみ* 有効です。
	Windows NT 4 では動作 *しません*。
目的:
	samba で共有されたプリンタをクリックしたときに、そのプリンタの
	ドライバを Windows 95 マシンに自動的にインストールできるように
	することです。 samba サーバを NT server のようにするわけです。

方法:
	3段階の設定となります。

	まず第一に、プリンタドライバのファイルを置くディレクトリを新し
	く作り、 smb.conf にそのディレクトリを用いる共有を作成します。

	例:
		[printer$]
   		  path=/usr/local/samba/printer
   		  public=yes
   		  browseable=yes

	第二に、用いるプリンタに必要なドライバのリストを作成します。こ
	れが最も面倒な仕事です。 'msprint.inf' および 'msprint2.inf' 
	というファイルを入手して下さい。多分動作している Windows 95 マ
	シンから持ってくるのが一番簡単でしょう。通常 'c:\windows\inf' 
	にあるはずです。それらを見て、お使いのプリンタを探して下さい。
	ここで samba に新しく導入されたプログラム 'make_printerdef' を	
	実行します。ファイル名とプリンタの名前をパラメータに指定して下
	さい。デフォルトでサポートされていないプリンタのドライバや、更
	新されたドライバがある場合は、まずそのドライバを Windows 95 シ
	ステムにインストールして下さい。すると inf ディレクトリに 
	'oem?.inf' (? は番号)というファイルができるはずです。このファ
	イルを msprint.inf の代わりに用います。

	例: (/usr/local/samba/lib ディレクトリで実行します)

	make_printerdef msprint.inf "Apple LaserWriter" >> printers.def
 	 
	このプログラムは必要となるファイルのリストを stderr に表示しま
	す。リストされたファイルを、第一ステップで作成したディレクトリ
	にすべてコピーして下さい。 smb.conf で "preserve case = yes" 
	を指定している場合は、ファイル名が大文字/小文字を含めて正確に
	一致しているかどうか確認して下さい。
	
	第三に、 smb.conf に二つの新しいパラメータを追加する必要があり
	ます。一つは [global] セクションに追加する 'printer driver file' 
	で、いま作成したプリンタ記述ファイルを指定します。もう一つはプ
	リンタの共有セクションに追加する 'printer driver location' で
	す。これはクライアントがドライバを入手する場所を指定します。ま
	た 'printer driver' パラメータに、 Windows でのプリンタ名を正
	しく設定する必要があります。

	例:

		[global]
  		  printer driver file=/usr/local/samba/lib/printers.def

		[lp]
		   comment = My old printer laser
		   browseable = yes
		   printable = yes
		   public = yes
		   create mode = 0700
		   printer driver=Apple LaserWriter
		   printer driver location=\\%h\PRINTER$

	%h はコンピュータの名前に展開されます。 PRINTER$ は第一ステッ
	プで作成した共有です。


あなたのところでうまくいかなくても、どうか怒らないで下さい。私のところ
ではちゃんと動いているのですから。トラブルが起こった場合は、smb.conf 
と printers.def を付けて、私まで気軽にメールを送って下さい。


******* herb@sgi.com による補足

原理について詳しく知りたい人のために、あるいは私自身がいくつかのフィー
ルドに関して間違っている可能性もあるので - 以下は printer.def ファイル
のエントリのフォーマットです。(各エントリは一つの行からなります。ここ
では可読性のために行が分割してあります)

::::
::

 は空でもかまいません。
 または  が inf ファイルに指定されて
いなければ、これらはデフォルトでそのプリンタのセクション名になります。

以下は Win95 マシンにあった MSPRINT2.INF ファイルからの抜粋です。ただ
し "QMS ColorScript 100 Model 30" プリンタにインストールするドライバに
関係していない行は、すべて削除してあります。この「ファイル」を用いて、 
printers.def がどのように生成されるかを説明してみたいと思います。

make_printerdef を実行します。第一引き数にはこのファイルの名前(今回は 
MSPRINT2.INF)、第二引き数にはプリンタの名前(今回は "QMS ColorScript
100 Model 30")を与えます。

まずプリンタ名が "Model section" に見つかります。すると "Installer
Section" の名前がわかります(等号の後の名前です)。別名は無視します。

"Installer Section" には "CopyFiles" と "DataSection" というエントリが
あります。 "CopyFiles" の行に、このプリンタに必要なファイルがすべて与
えられます。 @ で始まる名前はそのままファイル名を(@ を取り去ったもの
が名前になります)、それ以外の場合は "Copy Section" の名前を示します。
後者は、さらに必要なファイルのリストとなっています。このプリンタは 
"QCS30503.SPD" というファイルを一つと、 "COLOR_QMS_100_30" と 
"PSCRIPT" という二つのセクションを必要としていることがわかります。 
"COLOR_QMS_100_30" は "[DestinationDirs]" にもあり、23 という値が与え
られています。これは、このセクションにリストされているファイルが、すべ
てサブディレクトリ "color" に行くべきであることを示しています。結局、
このプリンタのためにコピーしなければならないファイルは、以下のようにな
ります。

QCS30503.SPD,color\QMS10030.ICM,PSCRIPT.DRV,PSCRIPT.HLP,PSCRIPT.INI,
TESTPS.TXT,APPLE380.SPD,FONTS.MFM,ICONLIB.DLL,PSMON.DLL

"Data Section" から、 "DriverFile", "HelpFile", "LanguageMonitor" とい
う値が得られます。 "LanguageMonitor" の値の両側にある % は、これが展開
可能な文字列であることを示しており、したがって実際の値は "[Strings]" 
で得られます。 "Data Section" には "DefaultDataType" が指定されること
もあります。

これらの情報を用いれば、 printers.def ファイルのエントリを構成すること
ができます。

     -> QMS ColorScript 100 Model 30 
                           (コマンドラインに与えた名前)
      -> PSCRIPT.DRV  (Data Section で与えられる名前)
        -> QCS30503.SPD (Installer Section の名前)
        -> PSCRIPT.HLP  (Data Section で与えられる)
 -> PostScript Language Monitor 
                           (Data Section で与えられる)
     -> RAW (指定されない場合のデフォルト)


さて... 結局エントリは以下のようになるでしょう(本当は一行になります。
ここでは可読性のために分割してあります):

QMS ColorScript 100 Model 30:PSCRIPT.DRV:QCS30503.SPD:
PSCRIPT.HLP:PostScript Language Monitor:RAW:
QCS30503.SPD,color\QMS10030.ICM,PSCRIPT.DRV,PSCRIPT.HLP,PSCRIPT.INI,
TESTPS.TXT,APPLE380.SPD,FONTS.MFM,ICONLIB.DLL,PSMON.DLL

---------------------- MSPRINT2.INF より抜粋 ------------------------

;
; The Manufacturer section lists all of the manufacturers that we will
; display in the Dialog box

[Manufacturer]
"QMS"


;
; Model sections. Each section here corresponds with an entry listed in the
; [Manufacturer] section, above. The models will be displayed in the order
; that they appear in the INF file.
;
; Each model lists a variation of its own name as a compatible ID. This
; is done primarily as an optimization during upgrade.
;
[QMS]
"QMS ColorScript 100 Model 30"    = QCS30503.SPD,QMS_ColorScript_100_Model_30


;
; Installer Sections
;
; These sections control file installation, and reference all files that
; need to be copied. The section name will be assumed to be the driver
; file, unless there is an explicit DriverFile section listed.
;
[QCS30503.SPD]
CopyFiles=@QCS30503.SPD,COLOR_QMS_100_30,PSCRIPT
DataSection=PSCRIPT_DATA

; Copy Sections
;
; Lists of files that are actually copied. These sections are referenced
; from the installer sections, above. Only create a section if it contains
; two or more files (if we only copy a single file, identify it in the
; installer section, using the @filename notation) or if it's a color
; profile (since the DestinationDirs can only handle sections, and not
; individual files).
;
[COLOR_QMS_100_30]
QMS10030.ICM

[PSCRIPT]
PSCRIPT.DRV
PSCRIPT.HLP
PSCRIPT.INI
TESTPS.TXT
APPLE380.SPD
FONTS.MFM
ICONLIB.DLL
PSMON.DLL


;
; Data Sections
;
; These sections contain data that is shared between devices.
;
[PSCRIPT_DATA]
DriverFile=PSCRIPT.DRV
HelpFile=PSCRIPT.HLP
LanguageMonitor=%PS_MONITOR%


;
; Color profiles go to the colors directory. All other files go to the
; system directory
;

[DestinationDirs]
DefaultDestDir=11
COLOR_QMS_100_30=23
COLOR_TEKTRONIX_200I=23
COLOR_TEKTRONIX_III_PXI=23


;
; Localizable Strings
;
[Strings]
MS="Microsoft"
PS_MONITOR="PostScript Language Monitor,PSMON.DLL"