一括コンパイルツール

解決


九分九厘  2003-12-04 11:02:07  No: 110444  IP: [192.*.*.*]

環境は、win2000、VB6.0です。
聞きたい内容は、
VBで、VBPをコンパイルし、exeを生成する
自動コンパイルツールを作成したのですが、

exeを保存する場所を  個々のVBPファイル内で指定した場所に保存したいのです。

現在の状況は、コード内にて指定した、一箇所にしかexeファイルを保存できません。
コンパイルするVBPファイルは複数あり、

VBPに応じて、保存場所を分けたいのです。

以前に1つ1つ単体でVBPを単体でコンパイルした時に、指定したフォルダ場所が
VBP内に残っています。

それを反映しつつ、作成したコンパイルツールにて一括コンパイルを
考えています。

どうが、アドバイスいただきたいです。
よろしくお願いいたします。

編集 削除
nanashi  2003-12-04 11:07:29  No: 110445  IP: [192.*.*.*]

VBPファイルの「Path32」というところに相対パスが書いてありますが、これじゃダメなんでしょうか?

編集 削除
魔界の仮面弁士  2003-12-04 11:21:09  No: 110446  IP: [192.*.*.*]

VB6.EXEのコマンドラインに、/make オプションだけではなく、
/outdir オプションも指定してみるとか。

編集 削除
九分九厘  2003-12-04 11:45:00  No: 110447  IP: [192.*.*.*]

>nanashiさん、魔界さん

はい、確かにPath32に相対パスがあります。
この相対パスに応じて、保存先を変更したいんです。

>VB6.EXEのコマンドラインに、/make オプションだけではなく、
>/outdir オプションも指定してみるとか。

今、/outdirをしており、その場所にしか落ちないのです。
    (まあ、当然なのですが。。)

逆に  /outdirを指定しなければ、VBP内の相対パスに落ちるのかな?
一度、やってみます。

編集 削除
九分九厘  2003-12-04 13:11:03  No: 110448  IP: [192.*.*.*]

nanashiさん、魔界さん、
ありがとうございます。

なんとか、いけたようです。
以下に、編集したPGの抜粋を載せます。
ありがとうございました。

********PG抜粋**********

'SMR格納ディレクトリをセット
    WK_DIR = DRIVE & PATH & "\"
    
On Error Resume Next

    WK_FILENAME = Dir(WK_DIR & FILE)
    Do While Trim$(WK_FILENAME) <> ""
        DoEvents
        '初回は無条件でコンパイル、2回目以降はexeの生成が確認されてから。
        If vbCNT = 0 Or PathFileExists("D:\JAPC\HYOJUN\BIN\" &                                                       PreviouFile) <> "0" Or _
           PathFileExists("D:\JAPC\HANBAI\BIN\" & PreviouFile) Or _
           PathFileExists("D:\JAPC\KYUYO\BIN\" & PreviouFile) Then
           
            Form1.FILE_NAME.Caption = WK_FILENAME

            '生成直前で対象exeをDelete
            Call Kill("D:\JAPC\HYOJUN\BIN\" & _
               Replace(UCase(WK_FILENAME), ".VBP", ".exe"))
            'コンパイル
            Shell VB_PATH & " " & WK_DIR & WK_FILENAME & " " & _
            "/MAKE  /OUT D:\JAPC\HYOJUN\BIN\ERROR.TXT"
            
            PreviouFile = Replace(UCase(WK_FILENAME), ".VBP", ".exe")
            WK_FILENAME = Dir
            vbCNT = vbCNT + 1
        End If
    Loop

編集 削除