Commit graph

283 commits

Author SHA1 Message Date
Robert Knight
e74435e871 Specify the CMake module path using a path relative to the current source dir
This fixes a problem where the module path was not found
when the updater is incorporated into a larger CMake project

MD-19678 #time 10m
2013-09-03 16:39:23 +01:00
Robert Knight
83b2697b52 Add updater_ prefix to test target names
This avoids a conflict with CMake targets that happen to have
the same name in Mendeley's main CMake project.

MD-19678 #time 10m
2013-09-03 16:34:02 +01:00
Robert Knight
d25cfb8583 Fix formatting of zip-tool.cpp
MD-19678 #time 2m
2013-09-02 10:29:13 +01:00
Robert Knight
ec3d09000b Add usage info to zip-tool utility
MD-19678 #time 5m
2013-09-02 10:28:29 +01:00
Robert Knight
0472a4e991 Fix updater test behavior with Ruby 1.9.x
The behavior of FileUtils.cp w.r.t. preserving the source file
mode changed between Ruby 1.8 and Ruby 1.9, in particular the execute
permission was not preserved for copied binaries so the test script
failed to launch them.

Set the :preserve attribute so that the source file's mode is
used.

MD-19678 #time 1h
2013-09-02 09:56:16 +01:00
Robert Knight
b168ed69d7 Fix zip-tool build on Mac
Add the Security and Cocoa frameworks as link dependencies
of the shared updater library.

MD-19678 #time 10m
2013-08-30 15:43:25 +01:00
Robert Knight
2658f1235d Fix update installer test on Windows
* Remove the dependency on Cygwin being installed along with zip.exe
   at a specific location.

   Add a small cross-platform tool in zip.cpp which creates a zip
   file using the contents of a given directory.

   This also removes the need for passing different arguments to 'zip'
   depending on the platform.

 * Fix StringUtils::endsWith()

 * Fix UpdateDialogWin32::quit(), when called on a background thread it
   had no effect. Post the WM_QUIT message to the main thread.
2013-08-30 15:33:46 +01:00
Robert Knight
484f8ae37b Fix Win32 build - add missing include 2013-08-30 14:09:09 +01:00
Robert Knight
1ebf62e1fa Fix Mac implementation of --auto-close option
Invoke [NSApp stop:] on the main thread. When invoked from
UpdateDialogCocoa::updateFinished() on the background thread
it had no effect as [NSApp stop:] only stops the current run loop.
2013-08-30 12:16:22 +01:00
Robert Knight
84288ddc6c Add missing UpdateDialog.cpp file
MD-19678 #time 5m
2013-08-30 12:04:22 +01:00
Robert Knight
cbda873a70 Run the update installation test as part of the 'make test' target
* Add a test which runs the test-update.rb script
 * Add a --auto-close option to the updater which auto-dismisses the
   update dialog once installation is complete. This is used in
   test-update.rb to make the script run without user interaction
   being required.

MD-19678 #time 1h
2013-08-30 11:44:39 +01:00
Robert Knight
c09e5d2290 Reduce duplication between the different platform implementations of the update dialog
Add an UpdateDialog base class which the different platform
implmentations implement and use this to:

 * Remove the duplicated runWithUi() functions in main.cpp
 * Reduce the amount of boilerplate for loading the GTK dialog at
   runtime and falling back to the non-GTK 'dialog' if this fails.

MD-19678 #time 1h
2013-08-30 10:52:05 +01:00
Robert Knight
b1bf64a671 Fix updater test on Ubuntu 13.04
Set file permissions to match those specified in
the updater script or in the case of new-dir/new-dir2
the mode hard-coded into FileUtils::mkdir()
2013-08-29 18:21:18 +01:00
Robert Knight
e55a58e4be Replace use of deprecated pkgconfig() macro with find_package()
MD-19678 #time 15m
2013-08-29 17:11:43 +01:00
Robert Knight
b6a13d3faa Fix build issues on Ubuntu 13.04
* Add missing <unistd.h> include
 * Check for presence of bzip2 library

MD-19678 #time 10m
2013-08-29 16:38:19 +01:00
Robert Knight
dab236d8de Enable customization of the tool used to sign the updater
Add a BINARY_SIGNING_TOOL CMake var which can be overridden to specify
a custom script/tool to use to sign the updater binary.
2013-08-29 15:59:19 +01:00
Robert Knight
401785786a Enable building the updater with newer SDKs on Mac
* Remove the CMAKE_OSX_DEPLOYMENT_TARGET setting and just
   rely on the -mmacosx-min-version argument.

 * Avoid requiring a specific OS X SDK version - just use the
   default one.
2013-08-29 15:25:04 +01:00
Robert Knight
5cd4484f8b Register unit tests with CMake
Use add_tests() to register the test binaries with CMake
so they can be executed with 'make test'/CTest.

MD-19678 #time 10m
2013-08-29 15:17:58 +01:00
Robert Knight
39b8ada727 Merge pull request #2 from liamstask/osx-build-fix
UpdateDialogCocoa: fix compile error "Update-Installer/src/UpdateDialogC...
2013-06-26 05:07:54 -07:00
Liam Staskawicz
d44b0638bf UpdateDialogCocoa: fix compile error "Update-Installer/src/UpdateDialogCocoa.mm:54:33: error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security] informativeTextWithFormat: message];" 2013-06-25 11:28:07 -07:00
Carles Pina
7864ad1829 In Ruby 1.9.2p0 'value' is a frozen string and fails to be assigned. 2012-12-12 12:10:07 +00:00
Robert Knight
4e2e5e9c68 Bump updater version to 0.15
MD-19088 #time 5m
Reviewed-by: Nicolas Esteves
2012-11-26 15:25:26 +00:00
Robert Knight
b60a7a7ba2 Respect the TMPDIR environment variable on Unix
On Mac, this is important as TMPDIR points to a user-specific temp dir
which avoids a potential problem where an app bundle created in the temp dir
running as User A cannot later be replaced by a copy of the updater running
as User B.

MD-19088 #time 30m
Reviewed-by: Nicolas Esteves
2012-11-26 15:25:13 +00:00
Robert Knight
16baf00ee6 Add a dummy file instead of a symlink on Windows
FileUtils.ln_s() is not supported on Windows and the updater
doesn't support symlinks on Windows either.

Create a dummy 'real' file to uninstall instead.

MD-19006
2012-11-06 12:46:04 +00:00
Robert Knight
80fdc5b048 Fix updater failing to uninstall broken symlinks
When checking whether a file exists before uninstalling it, FileUtils::fileExists()
checked whether the link target existed instead of the link itself.  Change fileExists()
to use lstat() instead of stat().

The updater uninstalls files in the order they are listed, if a file and a symlink to it
are both being uninstalled (eg. libMendeley.so.1.6.0 and the symlink libMendeley.so.1.6)
and the real file is removed first, uninstalling the symlink later failed due to the
above issue with uninstalling broken symlinks.

MD-19006
2012-11-06 12:31:41 +00:00
Robert Knight
92ef486dc6 Fix old/new helper binaries in unit tests failing to run on OS X 10.5 if built on OS X 10.7.
Apply the Leopard STL template symbol fix to the helper binaries.
Reviewed-by: Carles Pina
2012-10-29 14:03:51 +00:00
Robert Knight
2a59c6f888 Fix an issue where a build of the updater on OS X 10.7 failed to run under OS X 10.5
Copy the work-around for missing template symbols in the C++ runtime library
from Mendeley Desktop.

See the StackOverflow discussion referenced in the comment for more details.
Reviewed-by: Carles Pina
2012-10-29 12:55:47 +00:00
Robert Knight
0d1f285abb Update the v2_file_list.xml file to match the file_list.xml file
The UpdateScript test requires these files to list the same files
to install in the same order.
Reviewed-by: Carles Pina
2012-10-29 12:39:09 +00:00
Robert Knight
93365a2997 Do a more thorough check that install dir matches the package source dir after installing the update
Compare the package source dir and the post-update install dir recursively and check:

 * There are no unexpected files in the install dir

 * All files in the packaging dir were installed with the correct permissions and content

MD-18896
Reviewed-by: Carles Pina
2012-10-26 18:15:36 +01:00
Robert Knight
de8531c583 Bump updater version to 0.13
MD-18896
Reviewed-by: Carles Pina
2012-10-26 15:13:26 +01:00
Robert Knight
c54ecee1a9 Fix failure to install files in non-pre-existing nested directories during an update
If an update includes a new file 'dir1/dir2/file' where neither 'dir1' nor 'dir2'
already exist, the update fails as it attempts to create 'dir2' without first creating 'dir1'.

Use mkpath() instead of mkdir() to create the dest dir for a file.

MD-18896
Reviewed-by: Carles Pina
2012-10-26 15:12:38 +01:00
Robert Knight
9823b70c5a Fix build using gcc under OS X 10.8
* Change the default SDK from OS X 10.6 to 10.7.
   The 10.6 SDK is no longer bundled with the current version of XCode

 * Add explicit casts for permissions value

MD-18896
Reviewed-by: Carles Pina
2012-10-26 15:12:29 +01:00
Robert Knight
932cddfb77 Allow the OS X SDK version to be specified separately from the deployment target.
CMAKE_OSX_DEPLOYMENT_TARGET sets the minimum version that we want the app to run on,
CMAKE_OSX_SDK is the name of the SDK which we want to build against.

The OS X 10.5 SDK does not exist when building on OS X 10.7,
so allow this to be set to 10.6 instead.
2012-05-04 09:49:13 +01:00
Robert Knight
666c36a4bd Convert the README file to markdown 2011-12-06 15:08:12 +00:00
Robert Knight
66a1f6be9e Remove TODO file.
This will be replaced with the Github issue tracker.
2011-12-06 11:04:02 +00:00
Robert Knight
8a5bed77df Bump version number to 0.12 2011-12-01 13:56:16 +00:00
Robert Knight
66bafb317f Fix update failing to install if the system temporary directory path starts with a lower-case letter.
Fix FileUtils::isRelative() to check if the upper-case version of the first character
in the path is a letter.
2011-12-01 11:52:34 +00:00
Robert Knight
df89da7ebd Fix create-packages.rb script under Ruby 1.9.2
The 'dependency' variable is now just a string instead of array,
avoid trying to iterate over it with .each
2011-11-02 16:20:35 +00:00
Robert Knight
99815159b4 Bump version to 0.11 in trunk. 2011-10-19 11:36:59 +01:00
Robert Knight
02fa638261 Fix error creating directories during update when the app is installed to a drive other than C: on Windows.
FileUtils::dirname() did not include the drive letter under Windows and
the return value of dirname() was fed directly to mkpath().

When the drive letter is not specified, mkdir() assumes drive C: -
this either fails if the user does not have access rights to drive C:
or creates a directory in the wrong place.

This commit changes FileUtils::dirname() to include the drive letter
on Windows and adds a test.
2011-10-19 11:30:17 +01:00
Robert Knight
f49c147c4f Build with -Os under Linux/Mac
This reduces the size of the generated executable by 20%
2011-10-04 23:06:59 +01:00
Robert Knight
78c14868c6 Bump version number to 0.10 in trunk 2011-10-03 14:33:27 +01:00
Robert Knight
54afb7ca00 Bump version number to 0.9.1 2011-10-03 14:32:52 +01:00
Robert Knight
addc3b253d Link libbz2 statically to fix a problem running a copy of the updater built on a Debian system on a RedHat-based system.
Under Debian, the libbz2.so SONAME is libbz2.so.1.0, so ld links to this
version of libbz2.  Debian has symlinks from libbz2.so.1 and libbz2.so.1.0 to
libbz2.so.1.0.x.  RedHat however does not have the libbz2.so.1.0 symlink
so linking fails at runtime.

This commit fixes the problem by linking to libbz2 statically on Linux.
This does not bloat the updater library too much as libbz2 is only 70K
(measured on Ubuntu 11.04).
2011-10-03 11:53:02 +01:00
Robert Knight
60357cada9 Allow the --version argument to be used when running updater.exe from a console under Windows
Attach to the parent process's console and re-open stdout/stderr
before attempting to print the version number.
2011-09-27 16:35:20 +01:00
Robert Knight
c9543e59f6 Bump the trunk version number to 0.8 2011-09-27 15:36:02 +01:00
Robert Knight
3319c4ad3e Fix failure to start application after install on Windows systems which do not have the required side-by-side libraries installed system-wide.
It appears that the previous fix was incorrect.  The issue was
not with the current directory used by the process but that
the executable path passed to CreateProcess() used forward
slashes instead of back slashes.  A runtime error in loading
the WinSxS DLLs (the C++ runtime library) resulted.

Although most Windows API functions both back and forward slashes,
this appears not to be the case for loading of side-by-side
DLLs from the application's directory under Windows XP.

This may be related to the LoadLibrary() function whose documentation
specifies that backslashes must be used instead of forward slashes.

This commit converts the executable path to use backslashes before passing
it to CreateProcess() and removes the previous change to alter the
current working directory before starting the main app binary.
2011-09-27 15:30:06 +01:00
Robert Knight
61e8c92550 Merge branch 'master' of ssh://gitweb/git/desktop/standalone-updater 2011-09-16 15:45:41 +01:00
Robert Knight
1898c7de69 Use the secure version of splitpath
Fixes VC++ warning about possible buffer overruns.
2011-09-16 15:43:07 +01:00
Robert Knight
773edb5d53 Reduce Visual C++ compiler warnings
* Disable warnings about unimplemented exception specifications -
   these are implemented by G++ but not VC++.
 * Remove unused variable.
2011-09-16 15:31:39 +01:00