";
if ($preview == tra("Preview")) {
$options = new output_options;
+ if (is_admin($logged_in_user)) {
+ $options->htmlitems = false;
+ }
echo "".tra("Preview")."
\n";
echo ""
.output_transform($content, $options)
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 31dfe1bf9e..2e096f4760 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -22,7 +22,7 @@ libfcgi_sources = \
coproc.cpp \
filesys.cpp \
hostinfo.cpp \
- md5.c \
+ md5.cpp \
md5_file.cpp \
mfile.cpp \
miofile.cpp \
@@ -47,7 +47,7 @@ generic_sources = \
gui_rpc_client_ops.cpp \
gui_rpc_client_print.cpp \
hostinfo.cpp \
- md5.c \
+ md5.cpp \
md5_file.cpp \
mem_usage.cpp \
mfile.cpp \
diff --git a/lib/Makefile.mingw b/lib/Makefile.mingw
index 6ddf11a51e..0ce05c64bd 100644
--- a/lib/Makefile.mingw
+++ b/lib/Makefile.mingw
@@ -205,10 +205,6 @@ wrapper.o: $(BOINC_SRC)/samples/wrapper/wrapper.cpp
%.o: $(BOINC_SRC)/samples/wrapper/%.c
$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
-# C-mode file
-md5.o: $(BOINC_SRC)/lib/md5.c
- $(CXX) -c $(BOINC_SRC)/lib/md5.c -o md5.o $(CPPFLAGS) $(CXXFLAGS)
-
# for boinc_zip. Don't change the order!
zip:
mkdir -p $@
diff --git a/lib/md5.c b/lib/md5.cpp
similarity index 100%
rename from lib/md5.c
rename to lib/md5.cpp
diff --git a/locale/ca/BOINC-Setup.mo b/locale/ca/BOINC-Setup.mo
index 85cde9889f..ba86fb529c 100644
Binary files a/locale/ca/BOINC-Setup.mo and b/locale/ca/BOINC-Setup.mo differ
diff --git a/locale/da/BOINC-Manager.mo b/locale/da/BOINC-Manager.mo
index 82452b88d1..046f62539c 100644
Binary files a/locale/da/BOINC-Manager.mo and b/locale/da/BOINC-Manager.mo differ
diff --git a/locale/da/BOINC-Setup.mo b/locale/da/BOINC-Setup.mo
index a001ec45b3..49ab73e234 100644
Binary files a/locale/da/BOINC-Setup.mo and b/locale/da/BOINC-Setup.mo differ
diff --git a/locale/da/BOINC-Web.mo b/locale/da/BOINC-Web.mo
index 62930f59ce..d5dd5408a2 100644
Binary files a/locale/da/BOINC-Web.mo and b/locale/da/BOINC-Web.mo differ
diff --git a/locale/it_IT/BOINC-Manager.mo b/locale/it_IT/BOINC-Manager.mo
index 65d26f88da..a2e5567f35 100644
Binary files a/locale/it_IT/BOINC-Manager.mo and b/locale/it_IT/BOINC-Manager.mo differ
diff --git a/locale/it_IT/BOINC-Setup.mo b/locale/it_IT/BOINC-Setup.mo
index c4b2c115da..04ca325622 100644
Binary files a/locale/it_IT/BOINC-Setup.mo and b/locale/it_IT/BOINC-Setup.mo differ
diff --git a/locale/it_IT/BOINC-Web.mo b/locale/it_IT/BOINC-Web.mo
index 512f70109a..e6dd6644cb 100644
Binary files a/locale/it_IT/BOINC-Web.mo and b/locale/it_IT/BOINC-Web.mo differ
diff --git a/locale/ko/BOINC-Manager.mo b/locale/ko/BOINC-Manager.mo
index 489ef48ee1..6d47e564cc 100644
Binary files a/locale/ko/BOINC-Manager.mo and b/locale/ko/BOINC-Manager.mo differ
diff --git a/locale/ko/BOINC-Web.mo b/locale/ko/BOINC-Web.mo
index 351991d7cb..8d4d0f8ba0 100644
Binary files a/locale/ko/BOINC-Web.mo and b/locale/ko/BOINC-Web.mo differ
diff --git a/locale/lv/BOINC-Manager.mo b/locale/lv/BOINC-Manager.mo
index 9ed9c879c8..a12cc352b3 100644
Binary files a/locale/lv/BOINC-Manager.mo and b/locale/lv/BOINC-Manager.mo differ
diff --git a/locale/ms/BOINC-Client.mo b/locale/ms/BOINC-Client.mo
new file mode 100644
index 0000000000..00cc48218c
Binary files /dev/null and b/locale/ms/BOINC-Client.mo differ
diff --git a/locale/ms/BOINC-Manager.mo b/locale/ms/BOINC-Manager.mo
new file mode 100644
index 0000000000..c1217e7a55
Binary files /dev/null and b/locale/ms/BOINC-Manager.mo differ
diff --git a/locale/ms/BOINC-Setup.mo b/locale/ms/BOINC-Setup.mo
new file mode 100644
index 0000000000..6b90fe4719
Binary files /dev/null and b/locale/ms/BOINC-Setup.mo differ
diff --git a/locale/ms/BOINC-Web.mo b/locale/ms/BOINC-Web.mo
new file mode 100644
index 0000000000..032b02f30a
Binary files /dev/null and b/locale/ms/BOINC-Web.mo differ
diff --git a/locale/nl/BOINC-Manager.mo b/locale/nl/BOINC-Manager.mo
index 9aa35bf7c2..9b8758dd49 100644
Binary files a/locale/nl/BOINC-Manager.mo and b/locale/nl/BOINC-Manager.mo differ
diff --git a/locale/nl/BOINC-Setup.mo b/locale/nl/BOINC-Setup.mo
index 086dbe7102..5a8905df6d 100644
Binary files a/locale/nl/BOINC-Setup.mo and b/locale/nl/BOINC-Setup.mo differ
diff --git a/locale/nl/BOINC-Web.mo b/locale/nl/BOINC-Web.mo
index e33c72b3c8..035968dda8 100644
Binary files a/locale/nl/BOINC-Web.mo and b/locale/nl/BOINC-Web.mo differ
diff --git a/locale/ru/BOINC-Manager.mo b/locale/ru/BOINC-Manager.mo
index e0323996f0..7bece9d664 100644
Binary files a/locale/ru/BOINC-Manager.mo and b/locale/ru/BOINC-Manager.mo differ
diff --git a/locale/ru/BOINC-Setup.mo b/locale/ru/BOINC-Setup.mo
index c5695a5f3f..139281ef68 100644
Binary files a/locale/ru/BOINC-Setup.mo and b/locale/ru/BOINC-Setup.mo differ
diff --git a/locale/ru/BOINC-Web.mo b/locale/ru/BOINC-Web.mo
index 68f9eee41a..352a17cdce 100644
Binary files a/locale/ru/BOINC-Web.mo and b/locale/ru/BOINC-Web.mo differ
diff --git a/locale/sk/BOINC-Manager.mo b/locale/sk/BOINC-Manager.mo
index ae9bfa0938..8836a9de03 100644
Binary files a/locale/sk/BOINC-Manager.mo and b/locale/sk/BOINC-Manager.mo differ
diff --git a/locale/sk/BOINC-Setup.mo b/locale/sk/BOINC-Setup.mo
index 6a8a58235c..267a4f8eb7 100644
Binary files a/locale/sk/BOINC-Setup.mo and b/locale/sk/BOINC-Setup.mo differ
diff --git a/locale/sk/BOINC-Web.mo b/locale/sk/BOINC-Web.mo
index 7dee1459e7..1d5e04409f 100644
Binary files a/locale/sk/BOINC-Web.mo and b/locale/sk/BOINC-Web.mo differ
diff --git a/mac_build/boinc.xcodeproj/project.pbxproj b/mac_build/boinc.xcodeproj/project.pbxproj
index 16ff8ca99d..dced027280 100755
--- a/mac_build/boinc.xcodeproj/project.pbxproj
+++ b/mac_build/boinc.xcodeproj/project.pbxproj
@@ -111,7 +111,7 @@
DD3E14F70A774397007E0084 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
DD3E14FD0A774397007E0084 /* Mac_GUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDA9D3BB09189A8C0060E7A7 /* Mac_GUI.cpp */; };
DD3E14FE0A774397007E0084 /* MainDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C41607C5D13E0098A04D /* MainDocument.cpp */; };
- DD3E14FF0A774397007E0084 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DD3E14FF0A774397007E0084 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DD3E15000A774397007E0084 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DD3E15010A774397007E0084 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
DD3E15020A774397007E0084 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
@@ -151,7 +151,7 @@
DD407A5307D2FB7C00163EF5 /* diagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BA207C5AE5A0043025C /* diagnostics.cpp */; };
DD407A5507D2FB8400163EF5 /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
DD407A5807D2FB8D00163EF5 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
- DD407A5B07D2FBA000163EF5 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DD407A5B07D2FBA000163EF5 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DD407A5D07D2FBA300163EF5 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DD407A5F07D2FBAE00163EF5 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
DD407A6207D2FBB300163EF5 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
@@ -295,7 +295,7 @@
DD8917A50F3B207E00DE5B1C /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
DD8917A70F3B208500DE5B1C /* gui_rpc_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.cpp */; };
DD8917AB0F3B209500DE5B1C /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
- DD8917AE0F3B20B100DE5B1C /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DD8917AE0F3B20B100DE5B1C /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DD8917B00F3B20B500DE5B1C /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DD8917B80F3B20C600DE5B1C /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
DD8917BA0F3B20CC00DE5B1C /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
@@ -429,7 +429,7 @@
DDD74DC607CF492C0065AC9D /* diagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BA207C5AE5A0043025C /* diagnostics.cpp */; };
DDD74DC707CF492D0065AC9D /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
DDD74DC807CF492E0065AC9D /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
- DDD74DCB07CF49310065AC9D /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DDD74DCB07CF49310065AC9D /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DDD74DCC07CF49320065AC9D /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DDD74DCD07CF49330065AC9D /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
DDD74DCE07CF49390065AC9D /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
@@ -488,13 +488,13 @@
DDFA61860CB3489E0037B88C /* str_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7BF7D70B8E7A9800A009F7 /* str_util.cpp */; };
DDFA61890CB348A90037B88C /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD479031AF001018E201A /* util.cpp */; };
DDFA618C0CB348C50037B88C /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
- DDFA618F0CB348E80037B88C /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DDFA618F0CB348E80037B88C /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DDFA61900CB348E90037B88C /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DDFA61920CB349020037B88C /* proxy_info.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BEF07C5B1770043025C /* proxy_info.cpp */; };
DDFA61940CB349160037B88C /* prefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BE407C5B1670043025C /* prefs.cpp */; };
DDFD5F0F0818F2EE002B23D4 /* gui_rpc_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.cpp */; };
DDFD5F270818F329002B23D4 /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
- DDFD5F280818F33C002B23D4 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
+ DDFD5F280818F33C002B23D4 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
DDFD5F290818F346002B23D4 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
DDFD5F2A0818F34F002B23D4 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
DDFD5F2B0818F359002B23D4 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
@@ -1175,7 +1175,7 @@
DDFE854A0B60CFD0009B43D9 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = ../../../../../System/Library/Frameworks/AppKit.framework; sourceTree = SOURCE_ROOT; };
DDFF2AD30A53D4AE002BC19D /* setprojectgrp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = setprojectgrp; sourceTree = BUILT_PRODUCTS_DIR; };
DDFF2AE80A53D599002BC19D /* setprojectgrp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setprojectgrp.cpp; sourceTree = ""; };
- F5159562029EB02001F5651B /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../lib/md5.c; sourceTree = SOURCE_ROOT; };
+ F5159562029EB02001F5651B /* md5.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = md5.cpp; path = ../lib/md5.cpp; sourceTree = SOURCE_ROOT; };
F5159563029EB02001F5651B /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../lib/md5.h; sourceTree = SOURCE_ROOT; };
F5159564029EB02001F5651B /* md5_file.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = md5_file.cpp; sourceTree = ""; };
F5159565029EB02001F5651B /* md5_file.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5_file.h; path = ../lib/md5_file.h; sourceTree = SOURCE_ROOT; };
@@ -1806,7 +1806,7 @@
DD344BB607C5AEEE0043025C /* hostinfo.cpp */,
DD344BB707C5AEEE0043025C /* hostinfo.h */,
DDA6BCED0BD4546D008F7921 /* mac */,
- F5159562029EB02001F5651B /* md5.c */,
+ F5159562029EB02001F5651B /* md5.cpp */,
F5159563029EB02001F5651B /* md5.h */,
F5159564029EB02001F5651B /* md5_file.cpp */,
F5159565029EB02001F5651B /* md5_file.h */,
@@ -2828,7 +2828,7 @@
DD3E14F70A774397007E0084 /* hostinfo.cpp in Sources */,
DD3E14FD0A774397007E0084 /* Mac_GUI.cpp in Sources */,
DD3E14FE0A774397007E0084 /* MainDocument.cpp in Sources */,
- DD3E14FF0A774397007E0084 /* md5.c in Sources */,
+ DD3E14FF0A774397007E0084 /* md5.cpp in Sources */,
DD3E15000A774397007E0084 /* md5_file.cpp in Sources */,
DD3E15010A774397007E0084 /* mfile.cpp in Sources */,
DD3E15020A774397007E0084 /* miofile.cpp in Sources */,
@@ -2927,7 +2927,7 @@
DD52C81208B5D44E008D9AA4 /* gui_rpc_client_ops.cpp in Sources */,
DD52C81308B5D44F008D9AA4 /* gui_rpc_client_print.cpp in Sources */,
DD407A5807D2FB8D00163EF5 /* hostinfo.cpp in Sources */,
- DD407A5B07D2FBA000163EF5 /* md5.c in Sources */,
+ DD407A5B07D2FBA000163EF5 /* md5.cpp in Sources */,
DD407A5D07D2FBA300163EF5 /* md5_file.cpp in Sources */,
DD407ABB07D2FC7D00163EF5 /* mem_usage.cpp in Sources */,
DD407A5F07D2FBAE00163EF5 /* mfile.cpp in Sources */,
@@ -3075,7 +3075,7 @@
DD8917A50F3B207E00DE5B1C /* filesys.cpp in Sources */,
DD8917A70F3B208500DE5B1C /* gui_rpc_client.cpp in Sources */,
DD8917AB0F3B209500DE5B1C /* hostinfo.cpp in Sources */,
- DD8917AE0F3B20B100DE5B1C /* md5.c in Sources */,
+ DD8917AE0F3B20B100DE5B1C /* md5.cpp in Sources */,
DD8917B00F3B20B500DE5B1C /* md5_file.cpp in Sources */,
DD8917B80F3B20C600DE5B1C /* mfile.cpp in Sources */,
DD8917BA0F3B20CC00DE5B1C /* miofile.cpp in Sources */,
@@ -3115,7 +3115,7 @@
DD73E3B608A07FC600656EB1 /* gui_rpc_client_ops.cpp in Sources */,
DDFD5F270818F329002B23D4 /* filesys.cpp in Sources */,
DD73E3A708A07CA600656EB1 /* hostinfo.cpp in Sources */,
- DDFD5F280818F33C002B23D4 /* md5.c in Sources */,
+ DDFD5F280818F33C002B23D4 /* md5.cpp in Sources */,
DDFD5F290818F346002B23D4 /* md5_file.cpp in Sources */,
DDFD5F2A0818F34F002B23D4 /* mfile.cpp in Sources */,
DDFD5F2B0818F359002B23D4 /* miofile.cpp in Sources */,
@@ -3240,7 +3240,7 @@
DD73E36E08A0720500656EB1 /* gui_rpc_server_ops.cpp in Sources */,
DDD74DC807CF492E0065AC9D /* hostinfo.cpp in Sources */,
DD33C70408B5BEDE00768630 /* http_curl.cpp in Sources */,
- DDD74DCB07CF49310065AC9D /* md5.c in Sources */,
+ DDD74DCB07CF49310065AC9D /* md5.cpp in Sources */,
DDD74DCC07CF49320065AC9D /* md5_file.cpp in Sources */,
DDD74DCD07CF49330065AC9D /* mfile.cpp in Sources */,
DDD74DCE07CF49390065AC9D /* miofile.cpp in Sources */,
@@ -3315,7 +3315,7 @@
DDFA61860CB3489E0037B88C /* str_util.cpp in Sources */,
DDFA61890CB348A90037B88C /* util.cpp in Sources */,
DDFA618C0CB348C50037B88C /* hostinfo.cpp in Sources */,
- DDFA618F0CB348E80037B88C /* md5.c in Sources */,
+ DDFA618F0CB348E80037B88C /* md5.cpp in Sources */,
DDFA61900CB348E90037B88C /* md5_file.cpp in Sources */,
DDFA61920CB349020037B88C /* proxy_info.cpp in Sources */,
DDFA61940CB349160037B88C /* prefs.cpp in Sources */,
diff --git a/py/Boinc/tools.py b/py/Boinc/tools.py
index fa06c1d5ec..3600e245c9 100644
--- a/py/Boinc/tools.py
+++ b/py/Boinc/tools.py
@@ -35,14 +35,14 @@ def make_uuid():
def md5_file(path):
"""
Return a 16-digit MD5 hex digest of a file's contents
- Read the file in chunks
+ Read the file in chunks
"""
chunk = 8096
try:
checksum = md5()
- except NameError:
+ except TypeError:
checksum = md5.new()
fp = open(path, 'r')
@@ -78,6 +78,9 @@ def get_output_file_path(filename):
"""
config = configxml.default_config()
fanout = long(config.config.uldl_dir_fanout)
- s = md5.new(filename).hexdigest()[1:8]
+ try:
+ s = md5(filename).hexdigest()[1:8]
+ except TypeError:
+ s = md5.new(filename).hexdigest()[1:8]
x = long(s, 16)
- return "%s/%x/%s" % (config.config.upload_dir, x % fanout, filename)
+ return "%s/%x/%s" % (config.config.upload_dir, x % fanout, filename)
diff --git a/win_build/boinc_os_ss.vcxproj b/win_build/boinc_os_ss.vcxproj
index 7531d3900f..3060b886e3 100644
--- a/win_build/boinc_os_ss.vcxproj
+++ b/win_build/boinc_os_ss.vcxproj
@@ -363,7 +363,7 @@
-
+
diff --git a/win_build/boincmgr.vcxproj b/win_build/boincmgr.vcxproj
index 101e39014e..5457be75c7 100644
--- a/win_build/boincmgr.vcxproj
+++ b/win_build/boincmgr.vcxproj
@@ -321,10 +321,7 @@
-
- CompileAsCpp
- CompileAsCpp
-
+
diff --git a/win_build/installerv2/BOINC.ism b/win_build/installerv2/BOINC.ism
index 25b3d23328..ea75ba3ac0 100644
--- a/win_build/installerv2/BOINC.ism
+++ b/win_build/installerv2/BOINC.ism
@@ -924,6 +924,7 @@
Target
ExtendedType
ISComments
+ CAAnnounceUpgrade | 1 | NewBinary6 | AnnounceUpgrade | | |
CACleanupOldBinaries | 1 | NewBinary6 | CleanupOldBinaries | | |
CACreateAcctMgrLoginFile | 1 | NewBinary6 | CreateAcctMgrLoginFile | | |
CACreateBOINCAccounts | 1 | NewBinary6 | CreateBOINCAccounts | | |
@@ -4051,6 +4052,7 @@ Click Advanced to customize.0 | | 1427879980 |
AllocateRegistrySpace | NOT Installed | 1563 | AllocateRegistrySpace | |
AppSearch | | 400 | AppSearch | |
BindImage | | 4300 | BindImage | |
+ CAAnnounceUpgrade | VersionNT And REMOVE <> "ALL" | 1001 | | |
CACleanupOldBinaries | REMOVE <> "ALL" | 796 | | |
CACreateAcctMgrLoginFile | NOT Installed | 6605 | | |
CACreateBOINCAccounts | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1546 | | |
@@ -4069,7 +4071,7 @@ Click Advanced to customize.0 | | 1427879980 |
CAGrantBOINCProjectsVirtualBoxRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1561 | | |
CAGrantBOINCUsersRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1557 | | |
CARestorePermissionBOINCData | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 6611 | | |
- CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1001 | | |
+ CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1002 | | |
CARevokeBOINCAdminsRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1555 | | |
CARevokeBOINCMasterRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1548 | | |
CARevokeBOINCProjectRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1551 | | |
@@ -4542,6 +4544,7 @@ VwBlAGIAAQBXAEUAQgB4ADgANgA=
IS_PROGMSG_XML_UPDATE_FILE | ##IDS_PROGMSG_XML_UPDATE_FILE## | |
InstallChoice | AR | |
LAUNCHPROGRAM | 1 | |
+ MSIRESTARTMANAGERCONTROL | Disable | |
Manufacturer | ##COMPANY_NAME## | |
MsiHiddenProperties | BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD | |
MsiLogging | voicewarmup | |
diff --git a/win_build/installerv2/BOINC_vbox.ism b/win_build/installerv2/BOINC_vbox.ism
index 1e441c2e19..c8598d52d1 100644
--- a/win_build/installerv2/BOINC_vbox.ism
+++ b/win_build/installerv2/BOINC_vbox.ism
@@ -924,6 +924,7 @@
Target
ExtendedType
ISComments
+ CAAnnounceUpgrade | 1 | NewBinary6 | AnnounceUpgrade | | |
CACleanupOldBinaries | 1 | NewBinary6 | CleanupOldBinaries | | |
CACreateAcctMgrLoginFile | 1 | NewBinary6 | CreateAcctMgrLoginFile | | |
CACreateBOINCAccounts | 1 | NewBinary6 | CreateBOINCAccounts | | |
@@ -4052,6 +4053,7 @@ Click Advanced to customize.0 | | 1427879980 |
AllocateRegistrySpace | NOT Installed | 1562 | AllocateRegistrySpace | |
AppSearch | | 400 | AppSearch | |
BindImage | | 4300 | BindImage | |
+ CAAnnounceUpgrade | VersionNT And REMOVE <> "ALL" | 1001 | | |
CACleanupOldBinaries | REMOVE <> "ALL" | 796 | | |
CACreateAcctMgrLoginFile | NOT Installed | 6605 | | |
CACreateBOINCAccounts | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1546 | | |
@@ -4070,7 +4072,7 @@ Click Advanced to customize.0 | | 1427879980 |
CAGrantBOINCProjectsVirtualBoxRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1560 | | |
CAGrantBOINCUsersRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1556 | | |
CARestorePermissionBOINCData | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 6611 | | |
- CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1001 | | |
+ CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1002 | | |
CARevokeBOINCAdminsRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1554 | | |
CARevokeBOINCMasterRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1548 | | |
CARevokeBOINCProjectRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1550 | | |
@@ -4543,6 +4545,7 @@ VwBlAGIAAQBXAEUAQgB4ADgANgA=
IS_PROGMSG_XML_UPDATE_FILE | ##IDS_PROGMSG_XML_UPDATE_FILE## | |
InstallChoice | AR | |
LAUNCHPROGRAM | 1 | |
+ MSIRESTARTMANAGERCONTROL | Disable | |
Manufacturer | ##COMPANY_NAME## | |
MsiHiddenProperties | BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD | |
MsiLogging | voicewarmup | |
diff --git a/win_build/installerv2/BOINCx64.ism b/win_build/installerv2/BOINCx64.ism
index 1a65e27b78..ba952e5731 100644
--- a/win_build/installerv2/BOINCx64.ism
+++ b/win_build/installerv2/BOINCx64.ism
@@ -924,6 +924,7 @@
Target
ExtendedType
ISComments
+ CAAnnounceUpgrade | 1 | NewBinary6 | AnnounceUpgrade | | |
CACleanupOldBinaries | 1 | NewBinary6 | CleanupOldBinaries | | |
CACreateAcctMgrLoginFile | 1 | NewBinary6 | CreateAcctMgrLoginFile | | |
CACreateBOINCAccounts | 1 | NewBinary6 | CreateBOINCAccounts | | |
@@ -4050,6 +4051,7 @@ Click Advanced to customize.0 | | 1427879980 |
AllocateRegistrySpace | NOT Installed | 1562 | AllocateRegistrySpace | |
AppSearch | | 400 | AppSearch | |
BindImage | | 4300 | BindImage | |
+ CAAnnounceUpgrade | VersionNT And REMOVE <> "ALL" | 1001 | | |
CACleanupOldBinaries | REMOVE <> "ALL" | 796 | | |
CACreateAcctMgrLoginFile | NOT Installed | 6605 | | |
CACreateBOINCAccounts | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1546 | | |
@@ -4068,7 +4070,7 @@ Click Advanced to customize.0 | | 1427879980 |
CAGrantBOINCProjectsVirtualBoxRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1560 | | |
CAGrantBOINCUsersRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1556 | | |
CARestorePermissionBOINCData | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 6612 | | |
- CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1001 | | |
+ CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1002 | | |
CARevokeBOINCAdminsRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1554 | | |
CARevokeBOINCMasterRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1548 | | |
CARevokeBOINCProjectRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1550 | | |
@@ -4541,6 +4543,7 @@ VwBlAGIAAQBXAEUAQgB4ADYANAA=
IS_PROGMSG_XML_UPDATE_FILE | ##IDS_PROGMSG_XML_UPDATE_FILE## | |
InstallChoice | AR | |
LAUNCHPROGRAM | 1 | |
+ MSIRESTARTMANAGERCONTROL | Disable | |
Manufacturer | ##COMPANY_NAME## | |
MsiHiddenProperties | BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD | |
MsiLogging | voicewarmup | |
diff --git a/win_build/installerv2/BOINCx64_vbox.ism b/win_build/installerv2/BOINCx64_vbox.ism
index f8ad5740e8..421fb81f17 100644
--- a/win_build/installerv2/BOINCx64_vbox.ism
+++ b/win_build/installerv2/BOINCx64_vbox.ism
@@ -924,6 +924,7 @@
Target
ExtendedType
ISComments
+ CAAnnounceUpgrade | 1 | NewBinary6 | AnnounceUpgrade | | |
CACleanupOldBinaries | 1 | NewBinary6 | CleanupOldBinaries | | |
CACreateAcctMgrLoginFile | 1 | NewBinary6 | CreateAcctMgrLoginFile | | |
CACreateBOINCAccounts | 1 | NewBinary6 | CreateBOINCAccounts | | |
@@ -4051,6 +4052,7 @@ Click Advanced to customize.0 | | 1427879980 |
AllocateRegistrySpace | NOT Installed | 1562 | AllocateRegistrySpace | |
AppSearch | | 400 | AppSearch | |
BindImage | | 4300 | BindImage | |
+ CAAnnounceUpgrade | VersionNT And REMOVE <> "ALL" | 1001 | | |
CACleanupOldBinaries | REMOVE <> "ALL" | 796 | | |
CACreateAcctMgrLoginFile | NOT Installed | 6605 | | |
CACreateBOINCAccounts | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1546 | | |
@@ -4069,7 +4071,7 @@ Click Advanced to customize.0 | | 1427879980 |
CAGrantBOINCProjectsVirtualBoxRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1560 | | |
CAGrantBOINCUsersRights | VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1556 | | |
CARestorePermissionBOINCData | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 6612 | | |
- CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1001 | | |
+ CARestoreSetupState | VersionNT And REMOVE = "ALL" | 1002 | | |
CARevokeBOINCAdminsRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1554 | | |
CARevokeBOINCMasterRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1548 | | |
CARevokeBOINCProjectRights | VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1 | 1550 | | |
@@ -4542,6 +4544,7 @@ VwBlAGIAAQBXAEUAQgB4ADYANAA=
IS_PROGMSG_XML_UPDATE_FILE | ##IDS_PROGMSG_XML_UPDATE_FILE## | |
InstallChoice | AR | |
LAUNCHPROGRAM | 1 | |
+ MSIRESTARTMANAGERCONTROL | Disable | |
Manufacturer | ##COMPANY_NAME## | |
MsiHiddenProperties | BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD | |
MsiLogging | voicewarmup | |
diff --git a/win_build/installerv2/redist/Windows/Win32/boinccas.dll b/win_build/installerv2/redist/Windows/Win32/boinccas.dll
index 22e2e208e6..d5e9e2a0ba 100644
Binary files a/win_build/installerv2/redist/Windows/Win32/boinccas.dll and b/win_build/installerv2/redist/Windows/Win32/boinccas.dll differ
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.cpp
new file mode 100644
index 0000000000..044c027375
--- /dev/null
+++ b/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.cpp
@@ -0,0 +1,84 @@
+// Berkeley Open Infrastructure for Network Computing
+// http://boinc.berkeley.edu
+// Copyright (C) 2005 University of California
+//
+// This is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation;
+// either version 2.1 of the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// To view the GNU Lesser General Public License visit
+// http://www.gnu.org/copyleft/lesser.html
+// or write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+#include "stdafx.h"
+#include "boinccas.h"
+#include "CAAnnounceUpgrade.h"
+
+#define CUSTOMACTION_NAME _T("CAAnnounceUpgrade")
+#define CUSTOMACTION_PROGRESSTITLE _T("Announce the new BOINC version to all components.")
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function:
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+CAAnnounceUpgrade::CAAnnounceUpgrade(MSIHANDLE hMSIHandle) :
+ BOINCCABase(hMSIHandle, CUSTOMACTION_NAME, CUSTOMACTION_PROGRESSTITLE)
+{}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function:
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+CAAnnounceUpgrade::~CAAnnounceUpgrade()
+{
+ BOINCCABase::~BOINCCABase();
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function:
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+UINT CAAnnounceUpgrade::OnExecution()
+{
+ return SetUpgradeParameters();
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function: AnnounceUpgrade
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+UINT __stdcall AnnounceUpgrade(MSIHANDLE hInstall)
+{
+ UINT uiReturnValue = 0;
+
+ CAAnnounceUpgrade* pCA = new CAAnnounceUpgrade(hInstall);
+ uiReturnValue = pCA->Execute();
+ delete pCA;
+
+ return uiReturnValue;
+}
+
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.h b/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.h
new file mode 100644
index 0000000000..6eac233add
--- /dev/null
+++ b/win_build/installerv2/redist/Windows/src/boinccas/CAAnnounceUpgrade.h
@@ -0,0 +1,36 @@
+// Berkeley Open Infrastructure for Network Computing
+// http://boinc.berkeley.edu
+// Copyright (C) 2005 University of California
+//
+// This is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation;
+// either version 2.1 of the License, or (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// To view the GNU Lesser General Public License visit
+// http://www.gnu.org/copyleft/lesser.html
+// or write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+#ifndef _CAANNOUNCEUPGRADE_H_
+#define _CAANNOUNCEUPGRADE_H_
+
+
+class CAAnnounceUpgrade : public BOINCCABase
+{
+public:
+
+ CAAnnounceUpgrade(MSIHANDLE hMSIHandle);
+ ~CAAnnounceUpgrade();
+ virtual UINT OnExecution();
+};
+
+
+#endif
+
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp
index b2daa50739..0a07fcd30a 100644
--- a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp
+++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp
@@ -75,6 +75,20 @@ UINT CADeleteBOINCAccounts::OnExecution()
if ( uiReturnValue ) return uiReturnValue;
+ if (IsUpgrading())
+ {
+ LogMessage(
+ INSTALLMESSAGE_INFO,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ _T("Upgrade detected, no need to delete accounts")
+ );
+ return ERROR_SUCCESS;
+ }
+
+
// Delete 'boinc_master' account
//
nasReturnValue = NetUserDel(
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp
index 97a6c9d361..af651110ef 100644
--- a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp
+++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp
@@ -64,6 +64,21 @@ UINT CADeleteBOINCGroups::OnExecution()
{
NET_API_STATUS nasReturnValue;
+
+ if (IsUpgrading())
+ {
+ LogMessage(
+ INSTALLMESSAGE_INFO,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ _T("Upgrade detected, no need to delete groups")
+ );
+ return ERROR_SUCCESS;
+ }
+
+
// Delete the 'boinc_admins'
//
nasReturnValue = NetLocalGroupDel(
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.cpp b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.cpp
index 3554eda522..4669145abc 100644
--- a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.cpp
+++ b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.cpp
@@ -126,6 +126,66 @@ UINT BOINCCABase::Execute()
}
+static BOOL IsVersionNewer(const tstring v1, const tstring v2) {
+ int v1_maj=0, v1_min=0, v1_rel=0;
+ int v2_maj=0, v2_min=0, v2_rel=0;
+
+ _stscanf(v1.c_str(), _T("%d.%d.%d"), &v1_maj, &v1_min, &v1_rel);
+ _stscanf(v2.c_str(), _T("%d.%d.%d"), &v2_maj, &v2_min, &v2_rel);
+
+ if (v1_maj > v2_maj) return TRUE;
+ if (v1_maj < v2_maj) return FALSE;
+ if (v1_min > v2_min) return TRUE;
+ if (v1_min < v2_min) return FALSE;
+ if (v1_rel > v2_rel) return TRUE;
+ return FALSE;
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function: SetUpgradeParameters
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+UINT BOINCCABase::SetUpgradeParameters()
+{
+ tstring strCurrentProductVersion;
+ UINT uiReturnValue = 0;
+
+ uiReturnValue = GetProperty( _T("ProductVersion"), strCurrentProductVersion );
+ if ( uiReturnValue ) return uiReturnValue;
+
+ uiReturnValue = SetRegistryValue( _T("UpgradingTo"), strCurrentProductVersion );
+ if ( uiReturnValue ) return uiReturnValue;
+
+ return ERROR_SUCCESS;
+}
+
+/////////////////////////////////////////////////////////////////////
+//
+// Function: IsUpgrading
+//
+// Description:
+//
+/////////////////////////////////////////////////////////////////////
+BOOL BOINCCABase::IsUpgrading()
+{
+ tstring strCurrentProductVersion;
+ tstring strRegistryProductVersion;
+ UINT uiReturnValue = 0;
+
+ uiReturnValue = GetProperty( _T("ProductVersion"), strCurrentProductVersion );
+ if ( uiReturnValue ) return FALSE;
+
+ uiReturnValue = GetRegistryValue( _T("UpgradingTo"), strRegistryProductVersion );
+ if ( uiReturnValue ) return FALSE;
+
+ return IsVersionNewer(strRegistryProductVersion, strCurrentProductVersion);
+}
+
+
/////////////////////////////////////////////////////////////////////
//
// Function: OnInitialize
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def
index bd3add9e46..541595489a 100644
--- a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def
+++ b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def
@@ -49,3 +49,4 @@ EXPORTS
RevokeBOINCUsersRights
DeleteBOINCGroups
DeleteBOINCAccounts
+ AnnounceUpgrade
\ No newline at end of file
diff --git a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.h b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.h
index 9462bc87be..af0cc95c0b 100644
--- a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.h
+++ b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.h
@@ -48,6 +48,9 @@ public:
// Called when we are being executed from the InstallUISequence
virtual UINT OnExecution();
+ //
+ UINT SetUpgradeParameters();
+ BOOL IsUpgrading();
// Registry Property Management
UINT GetRegistryValue(
diff --git a/win_build/installerv2/redist/Windows/x64/boinccas.dll b/win_build/installerv2/redist/Windows/x64/boinccas.dll
index 1e4e16eb45..c43d6a1577 100644
Binary files a/win_build/installerv2/redist/Windows/x64/boinccas.dll and b/win_build/installerv2/redist/Windows/x64/boinccas.dll differ
diff --git a/win_build/libboinc.vcxproj b/win_build/libboinc.vcxproj
index 1fcbf33bc2..6fd3b4ce34 100644
--- a/win_build/libboinc.vcxproj
+++ b/win_build/libboinc.vcxproj
@@ -265,7 +265,7 @@
-
+
diff --git a/win_build/libboinc_staticcrt.vcxproj b/win_build/libboinc_staticcrt.vcxproj
index 08bdfe0232..aacb3e7158 100644
--- a/win_build/libboinc_staticcrt.vcxproj
+++ b/win_build/libboinc_staticcrt.vcxproj
@@ -220,7 +220,7 @@
CompileAsCpp
-
+