現在オフラインです。再接続するためにインターネットの接続を待っています

ディストリビューション ウィザードで作成したパッケージを Windows2000 にセットアップする場合 "Path or File Not Found" エラーが発生する

この記事は、以前は次の ID で公開されていました: JP416585
現象
Microsoft Windows 2000 に 2 バイト文字を使用したユーザー名でログインし、ディストリビューション ウィザードで作成した setup.exe を実行した場合、プログラム グループを選択した後のファイル コピーが開始されるタイミングで以下のエラー メッセージが表示されることがあります。
Path or File Not Found.
原因
ディストリビューション ウィザードの障害です。
回避策

方法 1 : パスを変更する

この問題を Windows 2000 実行環境で回避するには、次のいずれかの方法で操作します。
  • 環境変数 TMP をシングル バイトのパスに変更し SETUP.EXE を実行する。
  • ユーザー名に 2 バイト文字を使用しない。

方法 2 : インストーラ パッケージ作成時にカスタマイズする

Visual Basic 6.0 ユーザーは、Setup1.vbp において Setup1.frm の Form_Loadイベントを以下のようにカスタマイズすることで回避できます。
修正前
  '使用する一時ディレクトリを取得します。  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


lChar には DBCS としてのバイト数が返されています。次の行で TMP フォルダ名のみ抽出していますが、このとき Left 関数の第二引数には文字数 (UNICODE) をわたす必要があります。しかし、バイト数 (DBCS) が保存されている IChar を指定しているため、正しくフォルダ名を取得できません。以下のように、取得したパスを DBCS に変換し lChar バイトの文字列として抽出したうえで UNICODE に戻すことで正しいフォルダ名が処理されるようになります。
詳細
Windows 2000 ではユーザー環境変数 TMP はユーザーごとに異なり、その値にはユーザー名 (%USERPROFILE%) が含まれます。ディストリビューション ウィザードは、CAB ファイルを展開するために環境変数 TMP で指定されているディレクトリを使用しますが、そのパスに 2 バイト文字が含まれる場合、TMP を正しく取得することができないためエラー メッセージが表示されます。Windows 95、Windows 98、Windows Me および Windows NT 4.0 においても、環境変数 TMP が 2 バイト文字列を含むパスに設定されている環境では再現します。

: setup1.vbp のカスタマイズを誤ると、ディストリビューション ウィザードは正しいインストーラ パッケージを作成することができません。上記の修正作業には十分な注意払い、対策後に作成されたインストーラ パッケージについても十分なテストを行う必要があります。
プロパティ

文書番号:416585 - 最終更新日: 08/02/2007 09:14:13 - リビジョン: 2.1

Microsoft Office 2000 Developer

  • kbexpertiseinter kbtshoot kbbug mbcs pdwizard vb6 全角 文字セット 日本語 ダブルバイト KB416585
フィードバック