|
秀インストールってソース付きなんですね, 知らなかった.
> しかし出来たEXEファイルが動かないパソコンがあるというので調べてみると、初
>期のWin95では動かないようです。起動すらしません。何か対策はあるでしょうか?
> いろいろリンクの設定などをいじってみたのですが、だめでした。
たぶん聞かれること、
「アーカイブ付属の hminst.exe でも動かないですか ?」
と、ついでにアーカイブ付属の hminst.exe を互換性チェッカにかけてみました。
hminst.exe (109 API) 互換性に問題がある API があります.
GetACP, GetCPInfo, GetOEMCP, TerminateProcess, SetForegroundWindow
これらは Win32s でサポートされていません。
FreeEnvironmentStringsW, GetEnvironmentStringsW, GetStringTypeW, LCMapString
W, MoveFileExA
これらは Win95 でサポートされていません。
なんか変な API がレポートされてるのは Win2K で検出したせいかもしれませんが、
とりあえず MoveFileEx が原因ではないでしょうか。
起動時のエラーって「序数 xx が KERNEL32.DLL からみつかりません」か「欠陥エク
スポート xx が KERNEL32.DLL からみつかりません」ではないですか ?
MoveFileEx は Win95 には存在しない API だと思います。
Win95 OSR2 では存在するらしく、Visual C/C++ の Ver.4 か Ver.5 のヘルプでは
「Win95 で使える, 一部のオプションは使えない」という表示だったと思います。
最新のもの (http://msdn.microsoft.com/library/ とか) では Win95 は unsupport
ed になっています。
これに該当するならば、Visual C/C++ 6.x を利用されているということですので、
line.23 の次あたりに
BOOL fWinNT;
を足して、
line.1110 fWin95 = LOBYTE(GetVersion()) >= 4;
を
OSVERSIONINFO ofi;
ofi.dwOSVersionInfoSize = sizeof(ofi);
GetVersionEx(&ofi);
fWin95 = (dwMajorVersion >= 4);
fWinNT = (ofi.dwPlatformId == VER_PLATFORM_WIN32_NT);
とでもして、
line.1033 if( MoveFileEx( pszFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT ) ) {
を
if (fWin95 && fWinNT && MoveFileEx( pszFile, NULL, MOVEFILE_DELAY_UNTIL_REBO
OT ))) {
として、あとは遅延ローディングでコンパイルすれば OK かな。
遅延ローディングは /DELAY または /DELAYLOAD:KERNEL32.DLL かな ?
# Delphi つかいなので、MSDN のヘルプの範囲以上には詳しくわかりません(汗
|
|