    !==
    !== 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 のようにするわけです。

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

    	まず第一に、プリンタドライバのファイルを置くディレクトリを新し
    	く作り、 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 ファイル
    のエントリのフォーマットです。（各エントリは一つの行からなります。ここ
    では可読性のために行が分割してあります）

    <Long Printer Name>:<Driver File Name>::<Help File Name>:
    <Language Monitor Name>:<Default Data Type>:<Comma Separated list of Files>

    <Help File Name> と <Language Monitor Name> は空でもかまいません。
    <Driver File Name> または  が 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 ファイルのエントリを構成すること
    ができます。

    <Long Printer Name>     -> QMS ColorScript 100 Model 30
                               (コマンドラインに与えた名前)
    <Driver File Name>      -> PSCRIPT.DRV  (Data Section で与えられる名前)
            -> QCS30503.SPD (Installer Section の名前)
    <Help File Name>        -> PSCRIPT.HLP  (Data Section で与えられる)
    <Language Monitor Name> -> PostScript Language Monitor
                               (Data Section で与えられる)
    <Default Data Type>     -> 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"