From: SourceForge.net <no...@so...> - 2003-08-08 11:23:31
|
Patches item #783782, was opened at 2003-08-06 00:41 Message generated for change (Comment added) made by kichik You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=373087&aid=783782&group_id=22049 >Category: NSIS Group: None >Status: Pending >Resolution: Fixed >Priority: 3 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Amir Szekely (kichik) Summary: 2 retries required for r/o file if ifnewer is used Initial Comment: NSIS version 2.0b3 SYMPTOMS: If installer needs to overwrite a file in "ifnewer" mode, and the old file on disk is read-only, file creation fails for the first time. Then abort/retry/ignore dialog is shown to the user. If user hits "retry", the program removes r/o attribute from the file and overwrites it successfully. There is exactly one retry message for each r/o file. CAUSE: Source of the problem is in file exec.c, line 382 (right after _tryagain label): if (!overwriteflag) { int attr=GetFileAttributes(buf0); if (attr & FILE_ATTRIBUTE_READONLY) SetFileAttributes (buf0,attr^FILE_ATTRIBUTE_READONLY); } Overwriteflag becomes zero after assignment on line 394. Thus, if user hits "retry", overwriteflag is now zero, we go inside the "if", r/o attrbite is removed and file is successfully overwritten. SOLUTION: Replace if condition with if (overwriteflag!=1) // off ---------------------------------------------------------------------- >Comment By: Amir Szekely (kichik) Date: 2003-08-08 14:23 Message: Logged In: YES user_id=584402 Thanks. I will upload a fixed version as soon as the other changes are ready. Just so you'd know, the solution I used is a bit different. Instead of always removing the read only flag from files if ifnewer/try is used (read only should never be removed for try) I have simply moved the code checking if overwriteflag is on below the ifnewer check. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2003-08-06 00:42 Message: Logged In: NO Sorry, forgot my e-mail. It's iv...@op... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=373087&aid=783782&group_id=22049 |