本日、VB6.0ランタイムインストールプログラム VB6RTEST が、Vector に登録された。
http://www.vector.co.jp/soft/win95/util/se342080.html
VB6.0で作成されたソフトの動作に必要なランタイム(WindowsXP SP2・VB6.0 SP6対応版)だ。今回は、「Path or File not Found」というエラーが表示されてインストールできない環境に対応した。
1.現象
ダブルバイト文字を使用したユーザ名でログインすると、プログラムグループを選択した後のファイルコピーが開始されるタイミングで「Path or File Not Found.」という表示のエラーが発生することがある。
2.原因
Visual Basic 6.0ディストリビューションウィザード(標準のインストーラ)の機能障害。
〔ソースの場所〕
C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1
にある setup1.frm を下記のように修正し、コンパイルし直した。
〔コンパイルの場所〕
C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard
----------------
オリジナル
'使用する一時ディレクトリを取得します。
gsTEMPDIR = String$(255, 0)
lChar = GetTempPath(255, gsTEMPDIR)
gsTEMPDIR = Left$(gsTEMPDIR, lChar)
AddDirSep gsTEMPDIR
gsTEMPDIR = gsTEMPDIR & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gsINI_TEMPDIR)
AddDirSep gsTEMPDIR
----------------
改良
'使用する一時ディレクトリを取得します。
gsTEMPDIR = String$(255, 0)
lChar = GetTempPath(255, gsTEMPDIR)
Dim s As String
s = StrConv(gsTEMPDIR, vbFromUnicode)
s = LeftB(s, lChar)
gsTEMPDIR = StrConv(s, vbUnicode)
AddDirSep gsTEMPDIR
gsTEMPDIR = gsTEMPDIR & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gsINI_TEMPDIR)
AddDirSep gsTEMPDIR
〔参考〕
マイクロソフト サポート技術情報 - 416585
3.解決方法
(1)VB6RTEST Ver.3.22 以降のバージョンを使用する
Ver.3.21→Ver.3.22の変更点
ディストリビューションウィザードを修正し、ダブルバイト文字を含むユーザ名のログインに対応した。(「Path or File Not Found.」のエラー回避。)
→「VB6.0ランタイム」へ
(2) (1)で解決しない場合や、VB6RTEST(Ver.3.21以前のバージョン)を使用する場合
解決策①
ダブルバイト文字(漢字、ひらがな等)を含むユーザ名でログインしているならば、シングルバイト文字(半角英数字)のみのユーザ名で再度ログインしてsetup.exe を実行する。
Windows XP ならば、administrator でログインする。
Windows XP の最初のユーザ名の場合、ユーザ名を変更しても、内部的にはコンピュータの名前が使用されているため、新しいアカウントを作成してインストールする。その後、通常のアカウントでログインする。
解決策②
既存のユーザ名でログインした場合、環境変数 TMP をシングルバイトのパスに変更し、setup.exe を実行する。
Windows XP の場合
「マイコンピュータを右クリック」-「プロパティ」-「詳細設定」-「環境変数」-「ユーザー環境変数」を編集。
このとき、シングルバイトパスに変更する。
4.詳細・その他
Windows 2000/XP ではユーザー環境変数 TMP はユーザーごとに異なり,その値にはユーザー名(%USERPROFILE%) が含まる。ディストリビューションウィザードは、CAB ファイルを展開するために環境変数 TMP で指定されているディレクトリを使用するが、そのパスにダブルバイト文字が含まれていると、TMP を正しく取得することができずエラーが発生する。
Windows 95/98/Me においても、環境変数 TMP がダブルバイト文字列を含むパスに設定されている環境ではエラーが発生する。
ユーザ名としてダブルバイト文字を使用すること自体はなんの問題もないが、半角英数字がより好ましいと言える。
Windows 2000/XP では、各種ソフトのインストールには、「administrator」等、半角英数字のユーザ名を使用することを推奨する。
Recent Comments