- Revenera Community
- :
- InstallShield
- :
- InstallShield Knowledge Base
- :
- CopyFile関数が上書きしようとするファイルがロックされていると関数がリターンしない
- Mark as New
- Mark as Read
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
CopyFile関数が上書きしようとするファイルがロックされていると関数がリターンしない
CopyFile関数が上書きしようとするファイルがロックされていると関数がリターンしない
Summary
本記事は、CopyFile関数が上書きしようとするファイルがロックされていると関数がリターンしない、もしくは、不正な値をリターンする問題とその回避方法について解説しています。
Symptoms
- CopyFile関数がリターンせず、インストーラがハングします。
- CopyFile関数が不正な値をリターンするために、インストーラが中断します。
Cause
Steps to Reproduce
インストーラ起動前に、CopyFile関数の出力先に、出力名のファイルが存在し、ロックされていることを確認します。インストーラを起動すると本問題は発生します。
Resolution
1. 添付のファイルをダウンロードしてください(IOJ-1667248.zip)
2. 以下のファイルのファイル名を変更してください。
変更前: C:\Program Files (x86)\InstallShield\2014\Redist\Language Independent\i386\ISSetup.dll
変更後: C:\Program Files (x86)\InstallShield\2014\Redist\Language Independent\i386\ORIG_ISSetup.dll
3. 以下のファイルのファイル名を変更してください。
変更前: C:\Program Files (x86)\InstallShield\2014\Redist\Language Independent\i386\ISP\ISSetup.dll
変更後: C:\Program Files (x86)\InstallShield\2014\Redist\Language Independent\i386\ISP\ORIG_ISSetup.dll
4. ダウンロードしたIOJ-1667248.zipを解凍し、上記の各フォルダに配置してください。
5. InstallShield2014 SP 1を起動してください。
6. プロジェクトを再ビルドしてください。
このHotFixを適用した後に、ロックされたファイルに上書きしようとするとCopyFile関数は正しいエラーコード0x80070020を返します。
Workaround
CopyFileの代わりに XCopyFile を使用することでも本問題を回避することができます。