Closed Bug 411788 Opened 17 years ago Closed 15 years ago

Software update handles different case filenames inconsistently

Categories

(Toolkit :: Application Update, defect)

x86
Windows Server 2003
defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: joduinn, Unassigned)

Details

If you want to change a filename (for example, from Foo -> foo), you do:

ADD Foo.exe
...
REMOVE foo.exe

This works fine on linux. However, it does not work as expected on win32. Win32 ignores case, and so ended up removing the one and only file foo.exe.
Component: Build & Release → Software Update
Product: mozilla.org → Firefox
QA Contact: build → software.update
Version: other → unspecified
well, seems like the simple answer is "don't do that"... we probably shouldn't be changing case in the first place.

But if you put the REMOVE instructions first and then the ADD instructions, this would probably work... no guarantees though.
We ran into this problem in the 0.2.5->0.3 release cycle of Songbird. Changing the name of the application from Songbird.exe to songbird.exe was not one of our best ideas.

The fix was indeed to move the append_remove_instructions call above the make_add_instruction. This is what we did to the complete mar generation script:

Index: tools/update-packaging/make_full_update.sh
===================================================================
RCS file: /cvsroot/mozilla/tools/update-packaging/make_full_update.sh,v
retrieving revision 1.9
diff -u -p -r1.9 make_full_update.sh
--- tools/update-packaging/make_full_update.sh  29 Mar 2007 14:11:40 -0000      1.9
+++ tools/update-packaging/make_full_update.sh  19 Oct 2007 06:15:32 -0000
@@ -38,6 +38,10 @@ targetfiles="update.manifest"

 mkdir -p "$workdir"

+# XXXredfive - temporarily add the remove instructions first
+# Append remove instructions for any dead files.
+append_remove_instructions "$targetdir" > $manifest
+
 # Generate a list of all files in the target directory.
 pushd "$targetdir"
 if test $? -ne 0 ; then
@@ -48,8 +52,6 @@ list_files files

 popd

-> $manifest
-
 num_files=${#files[*]}

 for ((i=0; $i<$num_files; i=$i+1)); do
@@ -67,8 +69,9 @@ for ((i=0; $i<$num_files; i=$i+1)); do
   targetfiles="$targetfiles \"$f\""
 done

+# XXXredfive - temporarily moved to before the adds
 # Append remove instructions for any dead files.
-append_remove_instructions "$targetdir" >> $manifest
+#append_remove_instructions "$targetdir" >> $manifest

 $BZIP2 -z9 "$manifest" && mv -f "$manifest.bz2" "$manifest"


Note, we had to be careful where we moved it to because the scripts in common.sh reuse variables that get set in make_full_update.sh
Product: Firefox → Toolkit
I see this as expected OS behavior and don't think it should be fixed in the updater which would add complexity and this can be worked around in the scripts / tools used to create mar files.
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.