1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2026-04-03 00:11:32 +02:00

Compare commits

..

838 Commits

Author SHA1 Message Date
Klaas Freitag
12e5306947 Set version postfix to rc1 2015-03-12 11:21:23 +01:00
Christian Kamm
9249d6c2f9 Logging: Print instruction when job completed. 2015-03-12 10:26:44 +01:00
Christian Kamm
d0f07ee3a9 FolderMan: fix folderSyncStateChange emission. #2896
It was not emitted when a removed folder finished its sync,
and that left the UI in an old state sometimes.

Removing the Folder explicitly is unnecessary as a QSignalMapper
will automatically remove mappings for deleted QObjects.
2015-03-12 10:00:45 +01:00
Christian Kamm
3992fba168 Activity: Set a message for conflicts. #2792
Also show size when conflicting files are downloaded.
2015-03-12 10:00:45 +01:00
Daniel Molkentin
4601ac8b0e Remove unused (and partly binary!) NSIS artifacts 2015-03-12 09:29:48 +01:00
Jenkins for ownCloud
a81b0db2a8 [tx-robot] updated from transifex 2015-03-12 02:18:36 -04:00
Jocelyn Turcotte
d88751bb8b shell_integrations: Fix the precompiled headers usage in OCUtil
Enable it in all configurations and add the missing include.
2015-03-11 22:17:46 +01:00
Markus Goetz
f13dfc19a0 OS X: Fix UI glitches related to sync folder
For #2113 and #2947
2015-03-11 16:42:12 +01:00
Jocelyn Turcotte
0fccf5e50d Completely disable the crash handler if the user disabled it
The config currently only disable the reporter, but still leaves
the crash handler installed on startup. This causes conflicts
when running those builds in lldb.

Work around the issue by requiring the crash reporter to be
disabled in the settings before owncloud can be run in lldb.
This has the negative side-effect of not covering the
initial ConfigFile loading with the crash handler.

Issue #2946
2015-03-11 15:49:49 +01:00
Klaas Freitag
a2aab28ba6 ShareDialog: Connect the proper DateEdit signal. 2015-03-11 15:46:05 +01:00
Klaas Freitag
8e7b7caf04 ShareDialog: If the password is empty, disable button 2015-03-11 14:57:55 +01:00
Klaas Freitag
8cc5ff0e70 ShareDialog: Consider if resharing is not allowed on a share.
If a file or directory is shared without resharing permission, the
share dialog displays an error. This is not the optimal solution, but
best for now, as we do not have the permissions available for the file
manager plugin.

This fixes #2923
2015-03-11 14:12:08 +01:00
Klaas Freitag
9086f09fe2 SocketAPI: If filename has a trailing slash, remove it.
The SyncJournal stores the the names of directories without trailing slash.
2015-03-11 14:11:18 +01:00
Klaas Freitag
5a6eecd694 doc: Added snippet about custom WebDAV properties. 2015-03-11 14:11:18 +01:00
Christian Kamm
efe9f1b442 Lnk: Work around QFile::rename() #2792
QFile::rename() fails if the source file is a shortcut to a file
or directory that does not exist.
2015-03-11 12:29:33 +01:00
Jocelyn Turcotte
db7919dc2f Shrink sizeof(SyncFileItem) by 20%
Move all small fields together in the struct and make them use bitfields.
Also remove the unused log::_other_remotePerm field.
2015-03-11 11:49:11 +01:00
Olivier Goffart
4a01644625 Disable parallel uploads for server versions <= 8.0.2
Issue #2938
2015-03-11 11:31:51 +01:00
Jenkins for ownCloud
1ca68140f6 [tx-robot] updated from transifex 2015-03-11 02:18:42 -04:00
Klaas Freitag
071177cee2 Output a more sensible error message for auth errors 2015-03-10 12:14:14 +01:00
Klaas Freitag
c88742fad3 Revert "SetupW: Display proper error messages if password or user was wrong."
This reverts commit 396f38598f.

This adds redundant code and potentially breaks Shibboleth
2015-03-10 11:17:35 +01:00
Jenkins for ownCloud
791a0fd01e [tx-robot] updated from transifex 2015-03-10 02:18:50 -04:00
Markus Goetz
3b12b9d81d Revert "Propagator: Delete job on finish"
Needs a bit more thinking.

This reverts commit 8746914f3b.
2015-03-09 16:19:16 +01:00
Markus Goetz
31e4009737 Propagator: Use QBA for responseTimestamp instead of QString 2015-03-09 15:52:52 +01:00
Markus Goetz
8746914f3b Propagator: Delete job on finish 2015-03-09 15:41:43 +01:00
Klaas Freitag
2fa6839ac7 Make win32 build work again. 2015-03-09 15:14:55 +01:00
Klaas Freitag
b09e08c06f ShareDialog: Made it less "webbish" for better usability.
- Check the share checkbox automatically on open of the dialog
- Use the date picker with popping up calendar
- Proper initial size
- no resizing and appearing and disappearing.

Fixes probably #2917, also #2764
2015-03-09 14:33:02 +01:00
Jenkins for ownCloud
659f5ad301 [tx-robot] updated from transifex 2015-03-09 02:18:47 -04:00
Jenkins for ownCloud
6fe7f01a8d [tx-robot] updated from transifex 2015-03-07 02:18:24 -05:00
Jocelyn Turcotte
99f51998f2 Fix a crash in the crash reporter on OSX
The install_name of dependent libraries need to be updated
like we do for cmd and gui.
2015-03-06 19:28:53 +01:00
Jocelyn Turcotte
4c13992f5d Add a gen_sym_files script for OSX
This attempts to replicate what i686-w64-mingw32-gen_sym_files
is doing for us with MinGW by parsing the output of otool -L
to get the library name actually used by the executable.
2015-03-06 19:28:53 +01:00
Klaas Freitag
396f38598f SetupW: Display proper error messages if password or user was wrong.
If the password or user was wrong during setup, the client showed a
ConnectionClosed error instead of a proper Username or password wrong
message. This was because in HTTPCredentials::slotAuthentication, the
reply is closed, and a property is set to indicate the auth problem.

This patch now checks at all occurences of networkErrors if it might
have been an authentication problem, and displays something useful.

There is a good chance that this is a sufficient fix for
owncloud/enterprise#556
2015-03-06 16:41:59 +01:00
Klaas Freitag
b6e24cbd45 Push version to beta3 2015-03-06 16:41:59 +01:00
Klaas Freitag
d2848b9c26 Theme: Return the correct version string from version() 2015-03-06 16:41:59 +01:00
Daniel Molkentin
227ed8ae07 win32: libproxy is not needed 2015-03-06 15:47:15 +01:00
Markus Goetz
b622981b23 SyncEngine: Show a debug msg only when relevant 2015-03-06 09:28:50 +01:00
Jenkins for ownCloud
36e14cfc69 [tx-robot] updated from transifex 2015-03-06 02:18:35 -05:00
Markus Goetz
668de9bf31 Propagate: Don't retry direct download on abort 2015-03-05 21:56:39 +01:00
Markus Goetz
3f712dce02 ETags: For Folder and RequestEtagJob, always use Concatenation 2015-03-05 17:49:12 +01:00
Markus Goetz
2eaeaf33fa Discovery: Change abort code a bit
Now pressing pause in the UI will not show an error to the user.
2015-03-05 16:50:33 +01:00
Jenkins for ownCloud
8e21d612d8 [tx-robot] updated from transifex 2015-03-05 02:18:52 -05:00
Klaas Freitag
398bca9fe4 Add OWNCLOUDSYNC_EXPORT prefix to make windows build. 2015-03-04 13:50:55 +01:00
Klaas Freitag
07e60b9161 Bump version to 1.8.0 beta2. 2015-03-04 12:29:17 +01:00
Olivier Goffart
46d5d22f72 PropagateUpload: also read the OC-ErrorString header from the poll job 2015-03-04 12:01:41 +01:00
Olivier Goffart
97c221d860 PropagateUpload: add a few comments 2015-03-04 12:00:55 +01:00
Jocelyn Turcotte
a5d29e6d56 Fix missing symbols on XP
Import a fix from libcrashreporter-qt that should remove
usage of symbols not available in XP's msvcrt.dll

This should help solving #2907 with the crash reporter enabled.
2015-03-04 09:51:54 +01:00
Jenkins for ownCloud
4662f59577 [tx-robot] updated from transifex 2015-03-04 02:18:30 -05:00
Markus Goetz
131cf63d8d Propagator: Don't use 0,0 progress signals.
They seemed to have messed up the calculation sometimes for
the last chunk.
2015-03-03 17:46:57 +01:00
Olivier Goffart
4d85f1daec setup wizard: use a PROPFIND instead of a GET on the webdav url
In order to initiate the conneciton, we should not send a GET on the
webdav URL because that is not a valid webdav command on a collection.

Issue #2911
2015-03-03 16:03:53 +01:00
Klaas Freitag
f913cd97ee DiscoveryJob: Fix progress display.
This fixes #2909
2015-03-03 16:01:17 +01:00
Olivier Goffart
ccbeb86140 Fix build of the legacy propagator 2015-03-03 10:05:38 +01:00
Olivier Goffart
b43e0f5ebd Do not ask for the password when the check server job times up
QNetworkReply::OperationCanceledError may be both because of anthentication
error (because the HTTPCredentials abort the reply) or because of a timeout
(the timer abort the reply). We should only ask for the password if the
reply was canceled because the password was wrong.
2015-03-03 09:21:24 +01:00
Jenkins for ownCloud
b3c82fd7b6 [tx-robot] updated from transifex 2015-03-03 02:18:28 -05:00
Jenkins for ownCloud
15a60bb359 [tx-robot] updated from transifex 2015-03-03 01:15:17 -05:00
Markus Goetz
fe574dbbf9 Discovery: Free some memory before propagate (#2902) 2015-03-02 15:08:21 +01:00
Markus Goetz
7595c7e697 Discovery: Free some memory on VIO dir close (#2902) 2015-03-02 14:09:01 +01:00
Olivier Goffart
bd6769a3fd LsColJob: one must now specify the properties
So the discovery phase don't ask for the quota, and the selective sync
don't ask for all the other properties

Issue #2906
2015-03-02 11:03:25 +01:00
Jenkins for ownCloud
dc2a919e75 [tx-robot] updated from transifex 2015-03-01 02:18:29 -05:00
Jenkins for ownCloud
c20fc24f4d [tx-robot] updated from transifex 2015-02-28 02:18:39 -05:00
Daniel Molkentin
5f8af4527e Update Windows cross build instructions for 1.8 2015-02-27 17:13:14 +01:00
Markus Goetz
80f3c7584b libowncloudsync: Don't link to Qt SQL and Qt XML
For issue #2901 ..
2015-02-27 16:20:25 +01:00
Klaas Freitag
05624e3fc8 FileSystem: Remove QFileInfo based implementations.
QFileInfo has to be refreshed if the underlying file has been
modified in between. That is dangerous so ckamm and me decided
to eliminate the QFileInfo based implementations.

This was triggered by a bug that the client uploaded files that
it should not have.
2015-02-27 15:27:49 +01:00
Christian Kamm
e381143a8f Ensure good sync state if in-progress folder is deleted. #2896
The slotFolderSyncFinished() didn't reliably trigger because
the folder was being deleted before the syncFinished signal could
fire.
2015-02-27 12:39:19 +01:00
Christian Kamm
b03209ccef Inform user about ignored long files. #2882 2015-02-27 12:12:39 +01:00
Markus Goetz
ec03ebd69f Token Auth: Allow empty token
Just username/password. The received token will automatically be stored
inside the QNetworkCookieJar.
2015-02-27 11:58:18 +01:00
Daniel Molkentin
ff68caac24 Merge pull request #2900 from rullzer/qt-4.8-fix
static member QFileInfo::exists is not available on 4.8
2015-02-27 08:56:40 +01:00
Roeland Jago Douma
51c617801d static member QFileInfo::exists is not available on 4.8 2015-02-27 08:43:33 +01:00
Jenkins for ownCloud
e53290088f [tx-robot] updated from transifex 2015-02-27 02:18:29 -05:00
Klaas Freitag
4f7c062f3f csync_exclude: Ignore files where the filename length is > 254 chars.
This is for example HFS+ and others. It fixes #2882
2015-02-26 17:09:49 +01:00
Klaas Freitag
8507aba9f8 SocketAPI: Append trailing slash for directories in UPDATE_VIEW.
This fixes #2233
2015-02-26 16:41:55 +01:00
Olivier Goffart
d8b6e00fe7 Propagator: Let network propagator job understand a new header OC-ErrorString
This allows the server to send a readable error string in many cases
2015-02-26 15:53:09 +01:00
Christian Kamm
c8167b77c9 Remove mention of allprop #2865 2015-02-26 12:36:11 +01:00
Christian Kamm
c37792f58f Propagator: Upload files with future timestamps. #2880 2015-02-26 11:00:06 +01:00
Christian Kamm
842e5ba5e0 Sharing: Fix for folders containing &. #2892 2015-02-26 09:58:09 +01:00
Jenkins for ownCloud
10d28292c6 [tx-robot] updated from transifex 2015-02-26 02:18:35 -05:00
Klaas Freitag
506cc3908a Add proper copyright headers to some files, fixes #2869 2015-02-25 17:00:27 +01:00
Klaas Freitag
ca00b02b0a ShareDialog: Improve some GUI, fix #2850
This improves some wording and fixes some show/hide issues with password
setting.
2015-02-25 13:44:27 +01:00
Klaas Freitag
201075827f Sharedialog: Add a Share button. 2015-02-25 13:44:27 +01:00
Daniel Molkentin
961623d388 Crash Reporter: fix submit URL 2015-02-25 12:33:16 +01:00
Jocelyn Turcotte
a98ab6f51d shell_integration: Remove OwnCloud from public strings on OSX
Also removed it from commented out logs just in case.
2015-02-25 12:13:28 +01:00
Christian Kamm
5c7fd24ea8 Handle 503 due to maintenance more gracefully. #2884 2015-02-25 12:02:10 +01:00
Christian Kamm
76ac628153 Discovery: Distinguish 503 Storage not available. #2884 2015-02-25 12:02:10 +01:00
Christian Kamm
6f71bd9353 SocketAPI: Don't mark .lnk files as ignored on windows. #2447 2015-02-25 11:55:48 +01:00
Christian Kamm
f88398e776 lnk files: Fix exists() calls. #2792 2015-02-25 11:50:32 +01:00
Jenkins for ownCloud
ed315f54e3 [tx-robot] updated from transifex 2015-02-25 02:18:31 -05:00
Christian Kamm
08c33cd1dc Discovery: Fix handling of 503 on a folder. #2884 2015-02-25 08:09:07 +01:00
Christian Kamm
0464947610 Remove extra ; to silence warning. 2015-02-25 07:14:05 +01:00
Klaas Freitag
1929040bb7 Discovery: Preserve the error message. 2015-02-24 22:02:31 +01:00
Klaas Freitag
3af936c8a1 Some minor cleanups. 2015-02-24 22:02:29 +01:00
Jenkins for ownCloud
3bd48c1b3f [tx-robot] updated from transifex 2015-02-24 02:18:32 -05:00
Jenkins for ownCloud
298ca552c8 [tx-robot] updated from transifex 2015-02-24 01:15:20 -05:00
Jenkins for ownCloud
5dcc6a16ee [tx-robot] updated from transifex 2015-02-23 02:18:25 -05:00
Jenkins for ownCloud
318b858ce6 [tx-robot] updated from transifex 2015-02-22 02:18:23 -05:00
Jenkins for ownCloud
6c09764b35 [tx-robot] updated from transifex 2015-02-22 01:15:16 -05:00
Jenkins for ownCloud
96501322fa [tx-robot] updated from transifex 2015-02-21 02:18:23 -05:00
Jenkins for ownCloud
b1e9a74cc2 [tx-robot] updated from transifex 2015-02-21 01:15:14 -05:00
Daniel Molkentin
f38aa698eb Don't translate dummy strings 2015-02-20 10:12:31 +01:00
Daniel Molkentin
366f3f68b8 Activity view: Always add date
Fixes #2223
2015-02-20 10:12:19 +01:00
Olivier Goffart
276dd50650 Update GetGitRevisionDescription.cmake
From https://github.com/rpavlik/cmake-modules
2015-02-20 10:11:30 +01:00
Jenkins for ownCloud
defd6180c6 [tx-robot] updated from transifex 2015-02-20 02:18:35 -05:00
Jocelyn Turcotte
03e23da6a3 Show the settings also when no arguments are passed
sendMessage would only be called if there were options to
be sent to the running application.
Fix the issue by having explicitly named messages and always
send the show settings message.

Issue #2374
2015-02-19 16:57:16 +01:00
Jocelyn Turcotte
2ddaf5a06a Add a NO_MSG_HANDLER cmake option
This allows QDebug to output to stdout or OutputDebugString
to ease development.
2015-02-19 16:57:16 +01:00
Olivier Goffart
5e1aa7d383 SyncEngine: Fix move would re-upload the file
Because SyncJournalDb::postSyncCleanup was deleting the entries in the database
2015-02-19 15:00:37 +01:00
Olivier Goffart
e1871eb325 libsync: Fix qWarning in SyncEngine::slotJobCompleted saying we cannot find the sync item when moving
We need to compare against the original file name, that's why it's there
2015-02-19 13:13:45 +01:00
Olivier Goffart
66fc8e9e27 Merge branch 'master' into 1.8 2015-02-19 11:32:16 +01:00
Jenkins for ownCloud
3259cf59f5 [tx-robot] updated from transifex 2015-02-19 02:19:25 -05:00
Jocelyn Turcotte
c6442f67c1 shell_integration: Fix a crash on explorer startup
There is a race condition that can initialize the RemotePathChecker
instance concurrently on the same address and cause a crash when locking
the mutex. The reason is that local static initialization is not
thread-safe with MSVC2013.

Fix the issue by using call_once to initialize a static unique_ptr
instead.

This could be related to some reports of issue #2836.
2015-02-18 17:33:46 +01:00
Olivier Goffart
1998b602b9 SyncEngine: better merge of the renames node
The same file is on the two sync trees under different names in case of a rename
We must therefore use the rename target as the key in the _syncItemMap to ensure
that the trees are correctly merged.

Also use the same UTF-8 decoding for the target than for the actual file in order
to catch invalid utf-8 in the rename target
2015-02-18 12:41:06 +01:00
Olivier Goffart
193fca4a8b SyncFileItem::operator<: must return false when two items are equal
Fixes #2852
2015-02-18 12:41:06 +01:00
Jenkins for ownCloud
9659d0bdc7 [tx-robot] updated from transifex 2015-02-18 02:18:34 -05:00
Jocelyn Turcotte
ccf4298c81 shell_integration: Cleanup our uses of NSLog
Remove info messages and make sure that error messages
have an OwnCloud prefix since they will be reported by
Finder's process.
2015-02-17 18:23:30 +01:00
Jocelyn Turcotte
0b461e2275 shell_integration: Fix the overlay icons in the column view
Based on 79a713ea643e13e95f52bfe2adbbaf4a5ca92f8a in upstream liferay-nativity.
2015-02-17 18:20:16 +01:00
Jocelyn Turcotte
4f4ae5861a Enable c++11 regardless of the compiler detection
CMake is using "c++" as the compiler and the clang detection fails.
Since we require C++11 at this point, enable it in all cases.

Removed the MSVC todos since we don't plan supporting it yet.
2015-02-17 18:20:15 +01:00
Daniel Molkentin
fedf368c7a Merge pull request #2849 from owncloud/nsis_shortcuts_all_users
Install shortcuts for all users
2015-02-17 18:13:11 +01:00
Daniel Molkentin
c5f78fab51 Make NSIS installer with /S fully silent
Addresses #2006
2015-02-17 17:59:14 +01:00
Daniel Molkentin
56a907128a Install shortcuts for all users
Implements #2413
2015-02-17 17:17:39 +01:00
Olivier Goffart
fb77cd5f7e SyncEngine: Fix detection of the server reconfiguration
Some files might be kept (like the default files)
The files should be considered as NONE only if they are NONE on both trees

issue #2847
2015-02-17 16:44:13 +01:00
Daniel Molkentin
99d674c346 Default shiboolethwebview to 900x700, remember last size
Also add host to the title

Addresses #2285
2015-02-17 15:28:14 +01:00
Daniel Molkentin
9690ca0198 Explain the "crash now" button to translators 2015-02-17 14:03:09 +01:00
Olivier Goffart
9351c7485f Try another way to fix the build 2015-02-17 14:04:16 +01:00
Olivier Goffart
d43b82dc82 Fix compilation with clang
The compilation error was

 account.h:140:113: error: expected ')'
 const QList< QPair<QString, QString> > &queryItems = QList< QPair<QString, QString> >());
                                                                                   ^
followed by more errors.

The problem is because the compiler has hard time disambiguiating the comma

int foo(const QPair<int, int> &p = QPair<int, int>());
                                            ^
It is indeed quite hard for the compiler to know if this comma is a separation
between complate arguments or the separation between arguments of the functions.

Use the C++11 construct instead which does not need commas
2015-02-17 11:09:45 +01:00
Olivier Goffart
ce195bd599 SyncEngine: add an getter to the journal 2015-02-17 11:08:16 +01:00
Olivier Goffart
c0c8a22fa3 SyncEngine: pass a non-const reference to the SyncFileItemVector in aboutToPropagate
That way, users of the library  can change the contents of the sync item vector.
2015-02-17 11:08:16 +01:00
Jenkins for ownCloud
93717c95fb [tx-robot] updated from transifex 2015-02-17 02:18:24 -05:00
Jocelyn Turcotte
a955defae5 Raise the share window to make sure that the user sees it 2015-02-16 16:47:00 +01:00
Jocelyn Turcotte
9579102541 shell_integration: Generate a .pdb in Release for OCContextMenu_x64.dll 2015-02-16 16:47:00 +01:00
Daniel Molkentin
2423aa592f Add new icons by Jan 2015-02-16 14:47:32 +01:00
Olivier Goffart
151228b2a6 Fix build when compiling libsync without QtGui
Utility must stay QtGui-free, move the hidpiFileName to the theme which
is the only part in libsync which uses it, and already has #ifdefs
2015-02-16 10:24:42 +01:00
Jenkins for ownCloud
025d74bbcd [tx-robot] updated from transifex 2015-02-16 02:18:23 -05:00
Jenkins for ownCloud
7626478165 [tx-robot] updated from transifex 2015-02-15 02:18:23 -05:00
Daniel Molkentin
3dea1eb173 Merge pull request #2785 from owncloud/typos
some typos, grammar and sentence fixes
2015-02-14 23:56:10 +01:00
Volkan Gezer
bd4f68233f some typos, grammar and sentence fixes 2015-02-14 23:47:07 +01:00
Olivier Goffart
d6bdbf9f34 Logger: use qFormatLogMessage with Qt 5.4 so it respects the Qt logging preferences 2015-02-14 14:23:01 +01:00
Jenkins for ownCloud
2ccfb8671e [tx-robot] updated from transifex 2015-02-14 02:18:27 -05:00
Olivier Goffart
04bb67ef45 Fix Qt4 build
The automatic registration of metatype only came with qt5
2015-02-13 21:41:09 +01:00
Jocelyn Turcotte
4b67429234 shell_integration: Wait longer for the Share menu title
50ms is sometimes not enough when the client is busy synchronizing.
Wait up to 500ms for the client to answer before we give up and show an
empty menu title.

Ideally we should request the title before the watched directory list, but
the list is currently sent implicitly on connect.
2015-02-13 17:18:39 +01:00
Jocelyn Turcotte
23e248b5d1 shell_integration: Fetch the share menu title from the client on Windows
The context menu will now show "Share with ownCloud" instead of "Share" as
it does on other platforms.

This also updates the submodule to point to matching binaries.
2015-02-13 16:08:39 +01:00
Christian Kamm
40dbc78407 concatUrl: Remove manual parsing, add test. #2817 2015-02-13 14:53:55 +01:00
Klaas Freitag
b159018f51 Changelog edited for 1.8.0 2015-02-13 12:54:27 +01:00
Klaas Freitag
17570acab2 Bump version to 1.8.0beta1 2015-02-13 11:57:05 +01:00
Klaas Freitag
4710609cb9 Tests: Removed C++11 Hokuspokus to not confuse and kill elderly compilers. 2015-02-13 11:07:53 +01:00
Klaas Freitag
d297580d26 Tests: Fix compile if NEON is absent. 2015-02-13 10:04:28 +01:00
Jenkins for ownCloud
b50f1d0318 [tx-robot] updated from transifex 2015-02-13 02:18:28 -05:00
Daniel Molkentin
957c9f060d GeneralSettings: Add OpenSSL version number to about text 2015-02-12 23:23:47 +01:00
Daniel Molkentin
0bf0bab1eb One more Qt4 compile fix 2015-02-12 22:13:58 +01:00
Olivier Goffart
a7c97388a9 Fix Qt4 build for another error 2015-02-12 20:16:02 +01:00
Olivier Goffart
86c480ee09 Fix Qt4 build 2015-02-12 20:10:31 +01:00
Olivier Goffart
0184a00151 PropagateDirectory: make the code a bit more readable
Do not call slotSubJobFinished when there is are no sub jobs because
no sub jobs were finished.  Instead just call a finalize method
2015-02-12 20:00:04 +01:00
Olivier Goffart
b9161aa06c libsync: Fix a case in which canceling the sync would result in some folder never being sync'ed
The problem occurs because of the sorting of items when we have things like

bigfolder
bigfolder/bigsubfolder
bigfolder-2

Then, because dashes come before slash in ascii, the bigfolder-2 would come before its content
and the propagator would thinkg bigfolder is empty and save the etag before it is processed

Should fix issue #2832
2015-02-12 20:00:04 +01:00
Daniel Molkentin
00e42d1177 More HIDPI support
Except for the non-native activity tab
icon in settings, this should fix #11
2015-02-12 19:44:40 +01:00
Klaas Freitag
d37dd040d0 Sharedialog: Use new share link from ownCloud Server 8 on.
This is derived from pull request https://github.com/owncloud/client/pull/2813
2015-02-12 17:04:03 +01:00
Christian Kamm
a2aef04f21 ConValidator: Avoid a double auth check during startup. #2801 2015-02-12 15:25:44 +01:00
Christian Kamm
8f75434558 QuotaInfo: Ensure only one QuotaJob during startup. #2801 2015-02-12 15:25:44 +01:00
Daniel Molkentin
3dd6bcc323 Disable GUI support for TLS client certificates
The feature needs mor work
2015-02-12 15:17:59 +01:00
Olivier Goffart
063271e978 propagateupload: Disable parallel chunk upload for owncloud < 8
Issue #2743
2015-02-12 14:50:42 +01:00
Olivier Goffart
438c4fe72e Account: put the server version in the account 2015-02-12 14:50:42 +01:00
Klaas Freitag
f4144d6d38 Merge pull request #2827 from rullzer/fix_2812
Added push button to sharedialog to set password
2015-02-12 13:49:56 +01:00
Klaas Freitag
eada70ba44 Sharedialog: Removed Thumbnail retrieval.
It uses an unstable API that the server does not really support.
We need to postpone that. Removed for now.
2015-02-12 13:47:07 +01:00
Jocelyn Turcotte
bed34b1ddd Fix an infinite loop when unregistering OCContextMenu without admin rights
That mistake was introduced when changing the bool return value to an
HRESULT in the imported RegDelnode code.
2015-02-12 13:35:44 +01:00
Daniel Molkentin
3439ea395b Remove one more mention of certDate 2015-02-12 12:43:41 +01:00
Daniel Molkentin
ba3bab8f49 Remove certificateDate property and other superfluous code 2015-02-12 12:37:42 +01:00
Christian Kamm
9ba88f6baf Windows: Sync .lnk files correctly. #2792 2015-02-12 11:27:58 +01:00
Klaas Freitag
6be0b2b6c3 cmake: Lets do not explicitely set a APPLICATION_SHORTNAME.
That makes it defaulting to the APPLICATION_NAME which is ownCloud.
That is what we want and expect to read the system exclude file from
on linux.

How we find the system exclude file linux:

ConfigFile::excludeFileFromSystem()
 -> Theme::instance()->appName()

 -> OwncloudTheme::appName() returns "ownCloud"

 -> default Theme::appName() returns APPLICATION_SHORTNAME

 -> cmake installs to ${SYSCONFDIR}/${APPLICATION_SHORTNAME}
2015-02-12 11:12:10 +01:00
Christian Kamm
e4fce1250b Progress: Ensure overall progress is between 0 and 100. #2648
This should *already* be the case - but @dahan1999 reported that
it fixed #2648.
2015-02-12 10:09:07 +01:00
Jenkins for ownCloud
926bc56b3a [tx-robot] updated from transifex 2015-02-12 02:18:27 -05:00
Roeland Jago Douma
8523803d94 Added push button to sharedialog to set password
Added button to explicitly set the password (makes is clear the user has to do
somethign!). Patch for #2812
2015-02-11 22:14:51 +01:00
Olivier Goffart
4f202e5f4c Fix TokenCredentials compilation 2015-02-11 18:10:01 +01:00
Jocelyn Turcotte
7e211ef3d9 Update the binary submodule to include the fix for #2680 2015-02-11 17:04:08 +01:00
Jocelyn Turcotte
dc85ee3f0a shell_integration: Fix hangs on Windows Vista
It seems like verclsid.exe hangs on our class IDs when invoked
through explorer.exe for 5-10 seconds. It doesn't hang if I
invoke the same command line from cmd.exe, so there could be some
process parameters that don't play well with our extra thread
or to the pipe connection that we do in it.

Delay creating the RemotePathChecker thread until the first
IsMemberOf call. verclsid.exe only seems to instantiate a object
of each registered class, without actually using them, so we
can use this as a workaround.

This should be fixing issue #2680.
2015-02-11 16:45:11 +01:00
Christian Kamm
91ae912373 ShareDialog: Don't crash with bad response. #2811 2015-02-11 16:02:50 +01:00
Christian Kamm
9aeda891c3 Nautilus integration: clean up, fix bugs #2820
* Fix various spaces vs tabs issues
* Rewrite
  - to use instance variables consistently
  - to not make shared state explicit instead of relying on
    class variables of a common base
* Fix reconnecting to an oC client.
2015-02-11 14:53:17 +01:00
Christian Kamm
5cdf448693 SyncJournal: Use DELETE journal mode on FAT filesystems. #2693 2015-02-11 14:03:55 +01:00
Christian Kamm
89c69250ef Fix crash in discovery thread dtor.
Occasionally on Windows ~DiscoveryMainThread() triggered a crash.

Probably because the QMutableLinkedListIterator was destroyed after
it's underlying data had been removed (from the map).

Cleaning up the map and lists was redundant anyway, so the
destructor is changed to only explicitly destroy the vio_file_stat
objects.
2015-02-11 14:00:23 +01:00
Christian Kamm
5b6a6319c2 Nautilus integration: Fix invalid member access #2819 2015-02-11 11:31:07 +01:00
Christian Kamm
e79e2b80c8 SocketApi: Fix crash on exit. #2798
The _listeners list is destroyed before the _localServer.
And since _localServer is the parent of all generated QLocalSockets,
they get destroyed in turn - which triggers onLostConnection() and
thus accessed the destroyed _listeners list.

To avoid that, delete all active QLocalSockets in SocketApi before
its members are destructed.

We also now delete sockets when we're done with them. I think
disconnected sockets would otherwise linger until SocketApi destruction.
2015-02-11 09:50:10 +01:00
Christian Kamm
f8b24ac34d Fix reconnection after long network outage #2321
The problem was that StatusNotFound can indicate either a transient
network problem or a permanent server configuration problem.
2015-02-11 09:24:56 +01:00
Jenkins for ownCloud
4ff0d6635c [tx-robot] updated from transifex 2015-02-11 02:18:26 -05:00
Christian Kamm
51b9ec30a9 Remove connect to removed slot.
This seems to have slipped back in, probably during a complex merge
in ba8b1bbe06.
2015-02-11 08:12:09 +01:00
Jenkins for ownCloud
377887871c [tx-robot] updated from transifex 2015-02-11 01:15:14 -05:00
Klaas Freitag
d45d3892cb Account: Fix path assembling with QUrl, add query items separately.
Otherwise Qt does encode the delimiter between path and query items.
This fixes bug #2804
2015-02-10 17:13:27 +01:00
Klaas Freitag
0bf6a220ae Merge pull request #2807 from rullzer/sharedialog_force_password_multshare
Reset _public_share_id after we delete the share, thanks
2015-02-10 12:18:10 +01:00
Klaas Freitag
04a4d7c2c9 Merge pull request #2805 from rullzer/sharedialog_thumbnail
Sharedialog: retrive thumbnail from server for shares - thanks!
2015-02-10 12:16:28 +01:00
Jenkins for ownCloud
209d93ac05 [tx-robot] updated from transifex 2015-02-10 02:18:25 -05:00
Roeland Jago Douma
c44abf4918 Reset _public_share_id after we delete the share 2015-02-10 07:53:35 +01:00
Roeland Jago Douma
d7f5e89a1d Sharedialog: retrive thumbnail from server for shares
Initial patch for #2726. Request a thumbnail from the server if files are to be
shared.
2015-02-09 22:17:37 +01:00
Daniel Molkentin
72ec7ccde2 FF binary to current master 2015-02-09 11:58:15 +01:00
Daniel Molkentin
13aaa46a55 OCContextMenu: Also export modules for x86 2015-02-09 11:56:52 +01:00
Jenkins for ownCloud
3121546fb6 [tx-robot] updated from transifex 2015-02-09 02:18:27 -05:00
Olivier Goffart
51337a10af LSCOL job: Fix getting the list of folders when there are non-ascii
Task #2795
2015-02-08 12:23:47 +01:00
Jenkins for ownCloud
5f3104786a [tx-robot] updated from transifex 2015-02-08 02:18:23 -05:00
Jenkins for ownCloud
faec7362fe [tx-robot] updated from transifex 2015-02-08 01:15:15 -05:00
Daniel Molkentin
adfb216325 Merge pull request #2793 from glensc/patch-1
use touch from path
2015-02-08 00:43:03 +01:00
Elan Ruusamäe
e0656af1fc use touch from path
on some systems touch(1) is in /bin, not /usr/bin.
instead hardcoding another path, take it from $PATH, like other commands used here (rm, echo)
2015-02-08 01:27:46 +02:00
Daniel Molkentin
07fe077f7f More Mirall -> Client renaming to make l10n work again 2015-02-07 23:28:20 +01:00
Daniel Molkentin
d3103adbd8 Ship translations on Windows again after rename 2015-02-07 22:32:42 +01:00
Markus Goetz
d4132072d8 OS X: Send notification natively
For #2728
2015-02-07 18:23:40 +01:00
Jenkins for ownCloud
b8e9dd587d [tx-robot] updated from transifex 2015-02-07 02:18:26 -05:00
Jenkins for ownCloud
c48ab4830d [tx-robot] updated from transifex 2015-02-07 01:15:14 -05:00
Olivier Goffart
eedb5d0dae Revert "cmake: Clearly Define qtmain.lib link policy on Windows"
It make jenkins fail with the error:

CMake Error at CMakeLists.txt:3 (cmake_policy):
  Policy "CMP0020" is not known to this version of CMake.

This reverts commit 6d380c8548.
2015-02-06 17:46:57 +01:00
Jocelyn Turcotte
07849537cf Fix Windows building documentation issues
Add missing words and clear up why qtkeychain must be built in-source.
2015-02-06 17:10:35 +01:00
Klaas Freitag
4849c31add Sharing: Handle "Enforce password" for public shares properly.
If a 403 is received from the attempt to create a public link, the
dialog shows the password field, as this is server enforced.

This fixes #2774
2015-02-06 16:27:11 +01:00
Daniel Molkentin
9a4f4854de Some fixes for favlink manual test 2015-02-06 15:29:36 +01:00
Jenkins for ownCloud
9ff48e6bb5 [tx-robot] updated from transifex 2015-02-06 09:20:10 -05:00
Daniel Molkentin
01bca39138 s/mirall/client in transifex & translations
Last part of #2470
2015-02-06 15:16:55 +01:00
Olivier Goffart
6e8527e66d Wizard: Show the remote folder name when the theme has one
Relates to issue #2788
2015-02-06 14:50:52 +01:00
Jocelyn Turcotte
0d2b7967bc Windows: Fix opening activity entries with a space in the name
This fixes #2601
2015-02-06 13:44:06 +01:00
Olivier Goffart
70c8803a79 SelectiveSync: show a message in case of error or if there is no subfolder
Usefull when the folder does not exist (for example in case the theme
has a defaultServerFolder that does not yet exist, #2788)

But also to avoid confusion (issue #2663)
2015-02-06 12:27:54 +01:00
Olivier Goffart
0d2fb0754c Wizard: Fix the advanced setup page when the theme has a defaultServerFolder
Especially the selective sync dialog

Task #2788
2015-02-06 12:27:54 +01:00
Klaas Freitag
dbca7469f2 Enable the SHA sum in linux when build from source tar. 2015-02-06 12:18:09 +01:00
Markus Goetz
1e57432aae Propagator: Fix crash
This crash was uncovered when testing parallel chunks when one chunk
finished the upload. The propagate was then finished with the other
UploadDevices still being in-flight in the QNAM.
2015-02-06 11:19:41 +01:00
Markus Goetz
7c0d3b8485 Sharing: tr()s added 2015-02-06 11:11:09 +01:00
Daniel Molkentin
46abd47bfe Merge pull request #2787 from cmeh/patch-1
Orthography: "an folder" corrected to "a folder"
2015-02-06 10:31:57 +01:00
Olivier Goffart
2a88f5083c t6.pl: Add a test that re-upload a chunked file with lot of chunks 2015-02-06 10:23:20 +01:00
Olivier Goffart
5ec793e045 propagateupload: Save the mtime given by the server in the reply to GET
There could be a race condition if the file was updated on the server
between the discovery and the propagate phase. By taking the mtime from
the server, we make sure that we do not have a race.

This is tested by t6.pl with BIG3.file because the script was modifying
the file between the two phases
2015-02-06 10:23:20 +01:00
cmeh
1554f41441 Orthography: "an folder" corrected to "a folder" 2015-02-06 10:22:49 +01:00
Daniel Molkentin
9e945eb471 Settings dialog: better color for separator line 2015-02-06 08:30:51 +01:00
Jenkins for ownCloud
b5212c4467 [tx-robot] updated from transifex 2015-02-06 02:06:13 -05:00
Daniel Molkentin
c4dd1cfb69 Mac Settings Dialog: Native icons for account 2015-02-06 07:54:25 +01:00
Jenkins for ownCloud
00774b95a1 [tx-robot] updated from transifex 2015-02-06 01:25:20 -05:00
Jenkins for ownCloud
7de559f351 [tx-robot] updated from transifex 2015-02-05 19:11:07 -05:00
Volkan Gezer
eaa9c4fdf8 json capital 2015-02-05 20:41:08 +01:00
Jenkins for ownCloud
6050d5873c [tx-robot] updated from transifex 2015-02-05 13:58:32 -05:00
Markus Goetz
94e61c3205 Notifications: Fix creation of notification (fixup2)
For #2728
2015-02-05 17:20:52 +01:00
Markus Goetz
c4cf13bd97 Notifications: Fix creation of notification (fixup)
For #2728
2015-02-05 16:55:32 +01:00
Markus Goetz
71e22ffe2c Notifications: Fix creation of notification
For #2728
2015-02-05 16:46:40 +01:00
Olivier Goffart
3169a6f170 SelectiveSync: change the wording of the dialog on the wizard
Have different wording depending on the wizardSelectiveSyncDefaultNothing theme option

Relates to #2580
2015-02-05 16:22:04 +01:00
Daniel Molkentin
e7b190404a FF binary submodule to include the XP build fix 2015-02-05 16:16:42 +01:00
Markus Goetz
446e2b27d7 OS X Sparkle: Fix warning 2015-02-05 15:49:46 +01:00
Olivier Goffart
856df4c5f6 libsync: Get the capabilities and store it in the account 2015-02-05 15:42:56 +01:00
Olivier Goffart
34237f604e JsonApiJob: Refactor out of the shibbolethuserjob 2015-02-05 15:42:01 +01:00
Daniel Molkentin
6d380c8548 cmake: Clearly Define qtmain.lib link policy on Windows 2015-02-05 15:37:22 +01:00
Jocelyn Turcotte
af0001a149 [shell_integration] Remove the usage of Win32 APIs not available on XP 2015-02-05 15:15:05 +01:00
Jocelyn Turcotte
2debd5a198 [shell_integration] Setup precompiled headers properly with MSVC
This also fixes a minor compile error when using VS Express.
2015-02-05 15:14:42 +01:00
Daniel Molkentin
59bdda6226 Require OpenSSL > 1.0.0, remove obsolete dep from csync 2015-02-05 13:08:28 +01:00
Olivier Goffart
21345b81f1 wizard: fix the EntityExistJob URL
We need to add the davPath in there.
Otherwise there will be a redirect which will break shiboleth
(We want to only enter the password once)

Issue #2739 and #2780
2015-02-05 12:53:04 +01:00
Jenkins for ownCloud
4f03234487 [tx-robot] updated from transifex 2015-02-05 02:06:15 -05:00
Olivier Goffart
3dd8ce08b8 Parallel chunk upload: Fix a off-by-one while saving the done chunk in the DB
We should assume that the chunk currently uploading is NOT done (hence the -1)

il task 405
2015-02-04 18:52:26 +01:00
Markus Goetz
f233af04f6 Windows XP: Possible fix for #2648 2015-02-04 18:49:04 +01:00
Markus Goetz
3a1501dea4 OS X: Connect to newest possible overlay icon socket
This is for branded ownCloud clients which use a different file name.
2015-02-04 18:44:00 +01:00
Olivier Goffart
11f1229c31 Fix Qt4 build 2015-02-04 18:04:50 +01:00
Olivier Goffart
acb7e972ea Merge pull request #2778 from jturcotte/master
Allow building natively on Windows with MinGW
2015-02-04 17:11:56 +01:00
Jocelyn Turcotte
667665b809 Add documentation to build on Windows directly with MinGW
This doesn't link to the Generic Build Instructions section like other
platforms documentation does since the cmake and make commands are
different.
2015-02-04 16:57:56 +01:00
Jocelyn Turcotte
1ac523ec01 Output libocsync and libowncloudsync in the bin directory
Windows finds DLLs using PATH or the directory of the process'
executable. By outputing those dependend DLLs together with
owncloud.exe, the developer only need to have OpenSSL's bin
and the qtkeychain build directory in his PATH to let the
dynamic linker find them.

As the documentation of RUNTIME_OUTPUT_DIRECTORY points out,
this only affects windows as other platforms don't consider
libraries as runtime targets.
2015-02-04 15:00:22 +01:00
Olivier Goffart
ca56e5d9ca SyncEngine: Fix crash
We must check if 'it' is not == to begin() before doing it-1
Also i believe the logic was reversed if it was begin()

Task #2765
2015-02-04 14:52:41 +01:00
Jocelyn Turcotte
43a51c1bef Fix the MinGW build
- qtkeychain isn't necessarily in a qt5keychain subdirectory.
- Explicitly add OpenSSL to the include directories
- Make sure that the USE_OUR_OWN_SQLITE3 code is initialized
  for csync by calling find_package.
2015-02-04 14:50:38 +01:00
Olivier Goffart
68ec24797b Add some define.
Since Qt5.4, on release build, qDebug do not provide anymore the line
number unless we define QT_MESSAGELOGCONTEXT

Also define QT_USE_QSTRINGBUILDER while i'm on it (free optimisation)
2015-02-04 13:43:02 +01:00
Olivier Goffart
26132fd14e owncloudconnectionmethoddialog: typo 2015-02-04 13:42:49 +01:00
Jenkins for ownCloud
5fdf9bb7d2 [tx-robot] updated from transifex 2015-02-04 02:06:17 -05:00
Olivier Goffart
ca68ccd76a Fix Qt4 build 2015-02-03 20:04:04 +01:00
Olivier Goffart
1f9d7c41e8 owncloudconnectionmethoddialog: Change order of buttons, fix wording, and add the URL 2015-02-03 17:55:01 +01:00
Olivier Goffart
52d330d8e5 csync: add neon include directories 2015-02-03 16:00:55 +01:00
Klaas Freitag
17eb509c4e Merge pull request #2771 from rullzer/sharedialog_copybtn
Sharedialog: add copy button text and actually connect the button
2015-02-03 13:56:05 +01:00
Roeland Jago Douma
48254579a2 Sharedialog: add copy button text and actually connect the button 2015-02-03 13:02:52 +01:00
Markus Goetz
9d93642102 Update CONTRIBUTING.md
Fix broken links
2015-02-03 12:04:51 +01:00
Daniel Molkentin
a3106b1771 Client Dialog Support: Fix certificate dialog 2015-02-02 23:35:39 +01:00
Daniel Molkentin
d2670b8473 Merge pull request #2767 from jdhoek/feature/choose-connection-method
Add dialog to connection wizard for client-side TLS certificates
2015-02-02 23:22:19 +01:00
Jeroen Hoek
227b7ccabd Add dialog to connection wizard
When connecting to a https:// URL fails, present the user with three
choices:

 * Try again with a http:// URL
 * Configure client-side TLS certificates
 * Go back and enter a different URL

This allows users connecting with an ownCloud server secured with
client-side TLS certificates to start the certificate import wizard
manually instead of relying on a custom server error message.
2015-02-02 22:29:21 +01:00
Jenkins for ownCloud
6c3e19e531 [tx-robot] updated from transifex 2015-02-02 02:06:11 -05:00
Jenkins for ownCloud
ed49a708d0 [tx-robot] updated from transifex 2015-02-01 02:06:12 -05:00
Jenkins for ownCloud
e04300a01c [tx-robot] updated from transifex 2015-01-31 02:06:13 -05:00
Carla Schroder
65cebe7edd Merge pull request #2759 from owncloud/desktopsync
remove obsolete account setup page
2015-01-30 14:08:49 -08:00
Carla Schroder
63cda04b56 remove obsolete account setup page 2015-01-30 14:05:47 -08:00
Carla Schroder
acda7bddb8 Merge pull request #2758 from owncloud/install
updated installation page 1.8 client
2015-01-30 13:00:14 -08:00
Carla Schroder
6ffc04808d typo fixes 1.8 install 2015-01-30 12:58:42 -08:00
Carla Schroder
c932e26f83 markup and typo fixes 1.8 install page 2015-01-30 12:54:49 -08:00
Carla Schroder
682ce2e1e2 New page on installing 1.8 client 2015-01-30 12:48:12 -08:00
Carla Schroder
9873204be6 replace references to "Mirall" with "client" 2015-01-30 09:14:42 -08:00
Christian Kamm
49021fd96d SyncJournal: Reset all prepared statements. #2757
Makes closing of the database actually release file locks.
2015-01-30 15:35:42 +01:00
Klaas Freitag
5dc2871e2b Nautilus plugin: Fix broken indentation (python). 2015-01-30 14:27:15 +01:00
Klaas Freitag
481d4f3478 CMake: Changed message about compiling against Qt4. 2015-01-30 13:21:38 +01:00
Jenkins for ownCloud
5cf8726e60 [tx-robot] updated from transifex 2015-01-30 02:06:17 -05:00
Olivier Goffart
db6214e090 SyncEngine: Do not assert when the neon session is 0
It can now be 0 if neon is not in used

Issue #2755
2015-01-30 01:05:46 +01:00
Markus Goetz
bb215ad095 OS X: Don't show menu item outside sync folder
As per #2732
2015-01-29 21:13:09 +01:00
Markus Goetz
df214cd6c1 Folder: Make debug message clearer
The thread was actually already started in the discovery phase.
2015-01-29 20:47:45 +01:00
Markus Goetz
ea72d7bb11 CMake: Remove FIXME 2015-01-29 20:47:33 +01:00
Klaas Freitag
d2f1e6e03e ShareDialog: Disable sharing of external files.
See https://github.com/owncloud/client/issues/2732 for discussion.
2015-01-29 18:11:04 +01:00
Klaas Freitag
37f19dd0fe nautilus menu: Do not show entry on external files. 2015-01-29 18:11:04 +01:00
Daniel Molkentin
0c987f58e6 FF binary submodule 2015-01-29 16:43:07 +01:00
Daniel Molkentin
f84758eaac Add Resource File for OCContextMenu, adjust (c) dates. 2015-01-29 16:37:51 +01:00
Daniel Molkentin
8c58236e7c Remove template file 2015-01-29 16:13:36 +01:00
Daniel Molkentin
027328d3a6 Windows Integration: Don't use size_t in StringUtil, it's unsigned 2015-01-29 16:11:42 +01:00
Daniel Molkentin
332601ed26 Remove noisy debug output 2015-01-29 15:37:21 +01:00
Daniel Molkentin
6c0a449ebe NSIS: Fix c&p error 2015-01-29 15:25:14 +01:00
Daniel Molkentin
b1d2e1fa10 More translation adjustments 2015-01-29 14:44:48 +01:00
Daniel Molkentin
44e1d33faa Further string fixes 2015-01-29 13:35:48 +01:00
Daniel Molkentin
183b3c61e4 Update NSIS installer to install ContextMenu Extension 2015-01-29 13:19:54 +01:00
Daniel Molkentin
a199f2ba40 Update binary to reflect state of last commit 2015-01-29 13:13:43 +01:00
Daniel Molkentin
d6c4f749a6 Windows Shell Integration: Also ensure correct TargetName on x86/release 2015-01-29 13:03:38 +01:00
Daniel Molkentin
8af2c6c397 Update MSVC Project files to a consistent state 2015-01-29 13:00:30 +01:00
Daniel Molkentin
367ef7195a Windows Shell Integration: Fix warnings 2015-01-29 13:00:29 +01:00
Christian Kamm
43d6dbb0f2 SQL: Add debugging options. #2693
OWNCLOUD_SQLITE_JOURNAL_MODE: To use something else than WAL
OWNCLOUD_SQLITE_TEMP_STORE: To test with storing temporaries in memory.
2015-01-29 11:02:01 +01:00
Christian Kamm
cd0ad21132 SQL: Improve error reporting of failed exec(). #2693 2015-01-29 09:47:48 +01:00
Daniel Molkentin
6fa73e073f Certificate Wizard: Remove dead code, cleanup style 2015-01-28 17:38:38 +01:00
Christian Kamm
5fc231cda4 Shib: Fix fetching of 'user'. #2751 2015-01-28 15:15:35 +01:00
Daniel Molkentin
1ca8ab81c7 Fix for non C++11 compilers 2015-01-28 14:19:37 +01:00
Olivier Goffart
22d3a4a48f csync_owncloud: don't deref null pointer 2015-01-28 14:16:33 +01:00
Olivier Goffart
d70e146c1f Merge remote-tracking branch 'origin/ssl_client_cert'
Conflicts:
	CMakeLists.txt
	csync/src/CMakeLists.txt
	csync/src/csync_owncloud.c
2015-01-28 14:13:40 +01:00
Klaas Freitag
3888a461f3 Set APPLICATION_SHORTNAME correctly, fixes prev. commit 2015-01-28 13:55:09 +01:00
Klaas Freitag
4df2c8d872 cmake: Have a defined APPLICATION_SHORTNAME again.
The most scripts expect the APPLICATION_SHORTNAME to be a lowercase
APPLICATION_NAME. Is needed in package building.
2015-01-28 13:53:06 +01:00
Daniel Molkentin
989005d616 Clientcert support: Explictly link libsync against openssl 2015-01-28 13:31:17 +01:00
Daniel Molkentin
ed05a24cc4 Merge pull request #2749 from vtsingaras/patch-1
Update Toolchain-mingw32-openSUSE.cmake
2015-01-28 13:10:42 +01:00
Christian Kamm
2cee591b0e Merge branch 'sharedialog_fixes' of git://github.com/rullzer/client
Fix missing OcsShareJob constructor.

Conflicts:
	src/gui/sharedialog.cpp
2015-01-28 12:19:40 +01:00
ckamm
8a71d7d254 Merge pull request #2730 from rullzer/filebrowser_integration
Sharedialog: 404 is also an acceptable response when retriving shares
2015-01-28 12:09:33 +01:00
Christian Kamm
7950eb8ed6 sqlite: Update to version 3.8.8.1. #2750 2015-01-28 11:52:04 +01:00
Christian Kamm
f59515883d FolderMan: Require 2s minimum delay.
Otherwise we run into "can't upload because it's too recent" issues
when the folder watcher triggers a sync.

We used to do this, but my recent refactoring started counting the
time since the last sync against this minimum delay, leading to
1ms delays in practice. This fixes the regression.
2015-01-28 11:24:47 +01:00
Daniel Molkentin
2c432e0b97 Remove socketapiclient 2015-01-28 11:13:38 +01:00
Daniel Molkentin
524f04f34e Wizard: Give useful error message when server access is forbidden
Final fix for #2607
2015-01-28 11:06:41 +01:00
Daniel Molkentin
9e7ee42eb7 Wizard Remove unused pointer 2015-01-28 11:06:41 +01:00
Daniel Molkentin
6f82e80698 Remove debug 2015-01-28 11:06:41 +01:00
Christian Kamm
37680a0909 ShareDialog: Prepare for multiaccount. #43
Also fix a possible bug with the share dialog when no account
is configured.
2015-01-28 10:52:55 +01:00
Christian Kamm
350ad98c27 Folderwizard: Prepare for multiaccount. #43
Avoid accessing the global account instance and instead pass it in
from the outside.
2015-01-28 10:40:32 +01:00
Daniel Molkentin
2a3df5562c Add new Qt 5.4 dependencies, remove neon ones 2015-01-28 08:34:09 +01:00
Olivier Goffart
b0dbb49ca8 Shib: fix broken signal/slot connections 2015-01-26 16:23:43 +01:00
Vyronas Tsingaras
4603798996 Update Toolchain-mingw32-openSUSE.cmake
Fix cross-compiling for windows. change qt4 to qt5 since windows and OSX require Qt5 now.
2015-01-26 15:53:44 +02:00
Olivier Goffart
3169833cd7 gui: Still give a decent experience if there is no system tray
Helps for tasks #1138, #2023, #2123
2015-01-26 13:00:45 +01:00
Jenkins for ownCloud
75540e8a4c [tx-robot] updated from transifex 2015-01-25 02:06:12 -05:00
Joachim Schiele
9abc3e1333 fixes required by upstream 2015-01-23 19:22:56 +00:00
Olivier Goffart
fb79211514 Merge remote-tracking branch 'remotes/origin/win_context_menu' 2015-01-23 18:02:55 +01:00
Olivier Goffart
502e7081cf Make it compile with neon 2015-01-23 17:59:07 +01:00
Olivier Goffart
dcba129a98 Make it compile without neon 2015-01-23 17:56:46 +01:00
Olivier Goffart
b856266e91 Remove neon link flag when not required 2015-01-23 17:35:17 +01:00
Markus Goetz
7f1f62e14a CSync: Clean some more 2015-01-23 17:26:30 +01:00
Olivier Goffart
fe51ada1e8 Don't require NEON with Qt 5.4 2015-01-23 17:11:34 +01:00
Markus Goetz
6708c959d9 CSync: Remove c_list 2015-01-23 17:09:13 +01:00
Markus Goetz
af9daaeff7 CSync: Remove memory checks
We will get OOMed before this fails.
2015-01-23 16:59:51 +01:00
Olivier Goffart
a999884adf osx integration: adapt to socket api changes 2015-01-23 16:13:16 +01:00
Olivier Goffart
807277c0ae Socket API: Do not broadcast the shared menu entry on all socket when one connects to the socket API
Now we reply to the command SHARE_MENU_TITLE
2015-01-23 16:09:38 +01:00
Olivier Goffart
0af97156c9 Windows shell integration: Make the share entry work by adding a Sleep
Timeouts don't work with named pipe, so wait for 50ms to let time
for the client to answer
2015-01-23 15:43:03 +01:00
Markus Goetz
12ac9f9aa9 Discovery: Fix broken signal/slots 2015-01-23 15:37:36 +01:00
Markus Goetz
3885d5d706 Discovery: Report root etag from engine to folder
For #2352
2015-01-23 15:30:44 +01:00
Daniel Molkentin
f284786749 Fix typo 2015-01-23 14:44:53 +01:00
Markus Goetz
c54621eb19 OS X: Share menu for Finder 2015-01-23 12:00:31 +01:00
Klaas Freitag
2943b4a85a CMake: Fixed the rpath settings to make the nighlies build again. 2015-01-23 11:50:42 +01:00
Klaas Freitag
ed4d31ebc5 Nautilus overlay: Use branded program name for menu item. 2015-01-23 11:50:42 +01:00
Klaas Freitag
ed0b4e48d5 Sharedialog: Fix some error display. 2015-01-23 11:50:42 +01:00
Roeland Jago Douma
f9938c90ff Sharedialog: 404 is also an acceptable response when retriving shares
When we try to get the shares for a file/dir that has no shares yet 404 is an
acceptable response from the server.
2015-01-23 10:29:12 +01:00
Roeland Jago Douma
bcdc19f0e3 Sharedialog: Moved more logic to OcsShareJob
To make the Sharedialog a bit cleaner and to only have the logic in one place.
The postdata is now passed as a QList<QPair<QString, QString>> to the
OcsShareJob.
2015-01-23 09:41:10 +01:00
Roeland Jago Douma
fb967427e8 Sharedialog: We always want json return format
Cleanup the code a bit and set that we want json as return format for all
replies.
2015-01-23 09:17:00 +01:00
Roeland Jago Douma
0b10761291 Sharedialog: emit proper error code, only show error label if there is one 2015-01-23 09:10:02 +01:00
Daniel Molkentin
316c476bbd Revert "Revert "Windows Shell Integration: Show status icon for root folder""
This reverts commit 176413d312.
2015-01-22 19:13:12 +01:00
Daniel Molkentin
081cc0b9e8 WiP: Add Win32 Context menu integration 2015-01-22 18:45:20 +01:00
Olivier Goffart
560759ede8 Windows shell integration: Reduce the timeout time of WaitNamedPipe
This is maybe what causes the troubles of task #2576
2015-01-22 16:30:02 +01:00
Olivier Goffart
0f98a90858 Wizard: Add an option in the theme to default to nothing selected in the selective sync
Issue #2580
2015-01-22 15:57:55 +01:00
Christian Kamm
094da51d82 FolderWatcher: Fix ignore list usage.
All patterns with started with a ] were not working correctly.
2015-01-22 15:42:47 +01:00
Daniel Molkentin
39097980b0 Deployment: Accessiblewidgets no longer exists in Qt 5.4
Part of #2699
2015-01-22 15:27:19 +01:00
Olivier Goffart
3c26bfa618 Propagate Remote mkdir: save the fileid to the database early
It's important so that if we delete or rename  a diectory that is being
uploaded, this is properly detected
2015-01-22 15:11:04 +01:00
Olivier Goffart
168c89aba7 Wizard: fix spacing 2015-01-22 15:11:03 +01:00
Markus Goetz
0502f684e9 Discovery: Even less qDebug 2015-01-22 14:45:08 +01:00
Markus Goetz
45cb679ea7 Discovery: Less verbose debug 2015-01-22 14:37:35 +01:00
Markus Goetz
c9f9d55658 Merge branch 'qnam_csync_update'
Conflicts:
	src/libsync/networkjobs.cpp
2015-01-22 14:34:36 +01:00
Markus Goetz
d285db653e CMake: Check for Qt version
This is still WiP, we need to compile without neon if possible
2015-01-22 14:27:49 +01:00
Markus Goetz
dde8e35785 Discovery: Put results into proper place in map
The map is for memory management.
It can later be used as a cache for the recursive PROPFIND
(if we decide to activate it again)
2015-01-22 14:25:24 +01:00
Olivier Goffart
5860e5a46b Exclude *.tmp (as requested in #2424 ) 2015-01-22 14:08:31 +01:00
Christian Kamm
fa4e6d8261 Exponential backoff for rapid follow up syncs. #2355 2015-01-22 08:55:52 +01:00
Christian Kamm
145df8ec67 Pause between sync runs (particularly long ones) #2355 2015-01-22 08:55:52 +01:00
Christian Kamm
af5cbdbed8 Folder: Add timer for sync duration. 2015-01-22 08:55:52 +01:00
Nourredine
ba8b1bbe06 adds 'SSL client certificate' support from n.octeau with qknight changes as:
* removed broken QSsl::SslV3 default
* rewrote slotHandleErrors(): no longer claim errors which are none.
* hack reverted: lib64 was not the cause for NixOS issues related to libraries.
* refactored csync/src/csync_owncloud.c and discovered+fixed why the dav_connect was never getting the certPath+certPassoword
* cleanup of code but seems this crushed the ssl client certificate support
* fixes the https://github.com/owncloud/client/issues/69#issuecomment-69358377 issue
* lots of cleanup
* From TODO list : translate all french comments into english
* changed _pemCertificate type from QString to QByteArray
2015-01-21 23:55:11 +00:00
Klaas Freitag
82e5e36c57 Nautilus: Display context menu for files that are not yet synced. 2015-01-21 17:41:57 +01:00
Olivier Goffart
f2a7e0b28f Selective sync dialog: give a proper size by default 2015-01-21 15:37:00 +01:00
Olivier Goffart
0e86ceff73 Connection Validator: let the user cancel the password dialog
And don't ask for the password again if this happens
2015-01-21 15:33:51 +01:00
Olivier Goffart
c91de092e5 Setup wizard: Fix the http fallback logic
Also don't allow to go back from the advanced settings page because
this break everything
2015-01-21 15:33:51 +01:00
Markus Goetz
7a173f6e62 OS X: Fix path rewrite for owncloudcmd
It was broken after the folder restructuring (cmd/ and client/)
2015-01-21 15:17:40 +01:00
Klaas Freitag
95f7e83c5c Sharedialog: Some more refinements after the merge of the branch.
- Some dialog changes: Made it less vertical space comsuming
- Some variable cleanups
- Allow to share files that are not within the synced dir by
  copying them to the root of a sync dir first.
2015-01-21 15:05:23 +01:00
Olivier Goffart
d8b621d05f LsColJob: fix getting the sizes when the path contains %-encoded chars 2015-01-21 12:04:54 +01:00
Markus Goetz
fb87ad1442 OS X: Fix path rewrite for owncloudcmd
It was broken after the folder restructuring (cmd/ and client/)
2015-01-20 19:03:56 +01:00
Markus Goetz
c580275a01 Discovery: Delete file entries on destruction 2015-01-20 18:49:27 +01:00
Olivier Goffart
5c2298fa37 Discovery phase: fix a few warnings 2015-01-20 18:50:03 +01:00
Olivier Goffart
08043bed21 csync_update: Leave a margin of 1sec when comparing the time for the timezone changes
Because FAT has a bad resolution, when the timezone is changed, there may be
one second of difference.

Issue #2438
2015-01-20 18:34:24 +01:00
Markus Goetz
906779c4b1 SyncEngine: Use QNAM for csync_update
This is for #2507
2015-01-20 18:27:25 +01:00
Klaas Freitag
bd80c034ba Merge pull request #2723 from rullzer/filebrowser_integration
Sharedialog: link sharing from desktop
2015-01-20 17:45:34 +01:00
Markus Goetz
fd69f60a49 Update CONTRIBUTING.md 2015-01-20 11:01:55 +01:00
Daniel Molkentin
00ed37dd02 Merge pull request #2709 from rullzer/monochrome-state-info-icon
Resepct theming when no syncs are configure
2015-01-20 08:21:42 +01:00
Daniel Molkentin
4de815ad67 Merge pull request #2710 from rullzer/sort_folder_order
Manged folder list in the tray icon is now sorted
2015-01-19 18:56:55 +01:00
Daniel Molkentin
86eed7cb81 Fix SSL button icons 2015-01-18 15:34:48 +01:00
Roeland Jago Douma
63f18a7ebb Sharedialog: Pass QDate around instead of QString
Now pass a QDate object around so we only do the conversion in one place in
case the API changes.
2015-01-17 09:57:17 +01:00
Roeland Jago Douma
233f0423fa Sharedialog: Also reply on delete should be checked 2015-01-17 09:48:18 +01:00
Roeland Jago Douma
d5bddca01d Sharedialog: More Q_FOREACH 2015-01-17 09:29:13 +01:00
Roeland Jago Douma
00cb6f71da Sharedialog: Set correct minimum date
The minimum date should always be the current date + 1 day.
2015-01-17 09:10:42 +01:00
Roeland Jago Douma
9ac35d5869 Sharedialog: Use arg instead of append 2015-01-17 09:01:24 +01:00
Roeland Jago Douma
bd1db30eea Sharedialog: Minor fixes
The server generates a new share when a password is set/deleted so we need to
refetch the shares once that is done.

It is not possible to set an expiration date in the past for a share. So do not
allow the user to select a date in the past.
2015-01-17 08:50:28 +01:00
Roeland Jago Douma
6c3a5b1d69 Sharedialog: Do not hard code error reply messages
The server provides error messages in the json return code. Use those error
messages.
2015-01-17 08:29:20 +01:00
Roeland Jago Douma
c233baab5b Sharedialog: grouped sharelink stuff in one widget
A bit of grouping in the UI requiring less ->hide() and ->show() calls
2015-01-17 08:10:18 +01:00
Christian Kamm
aa6a5e4ac2 Credentials: Use the bound account everywhere.
This is preparation for multiaccount.
2015-01-16 15:22:56 +01:00
Roeland Jago Douma
71560ace71 Sharedialog: Show general info about a share
A start with some general share info in the share dialog.
2015-01-16 14:48:56 +01:00
Roeland Jago Douma
0fba4eee98 Sharedialog: Removed user/group sharing 2015-01-16 14:06:34 +01:00
Christian Kamm
91fce3ea73 Make public API explicit about blacklist kind. #2301
'blacklist' can mean the selective sync blacklist or the error
blacklist. Names in public API are now explicit about which
blacklist is meant.
2015-01-16 10:17:19 +01:00
Christian Kamm
b50475bc17 SQL: Fix error reporting on prepare fail. #2697 2015-01-16 09:12:25 +01:00
Klaas Freitag
40c802b148 Download: Handle locking problems as soft errors, enterprise #455 2015-01-15 20:51:30 +01:00
Klaas Freitag
7d9f917810 Filesystem: Check more return values and more logging. 2015-01-15 20:51:30 +01:00
Klaas Freitag
a5ae1a9734 Folder: Only count error free downloads for the gui notification. 2015-01-15 20:51:30 +01:00
Klaas Freitag
506360716a FolderMan: Removed too explicit logging that scares users. 2015-01-15 20:51:30 +01:00
Olivier Goffart
22ad34fa0e Merge branch '1.7'
Conflicts:
	admin/win/nsi/l10n/French.nsh
	src/mirall/propagator_qnam.cpp
2015-01-15 17:58:43 +01:00
Olivier Goffart
ce0e7e4a5d Propagator download: Do not assume the server do not support ranges if we cannot parse the Content-Range header
There are several reason why start==0
* The Content-Range header was not present
* We can't parse it
* Or it is actually 0

If we can't parse it, we cannot assume anything and must error out.
So only in the first case we should discard the temporary file and continue.

Issue #2708
2015-01-15 17:56:49 +01:00
Olivier Goffart
907b79d3b8 Utility: Use appropriate unit when converting from bytes to human readable units
We must not use the SI units if we use power of 2

I believe that we should use SI units and power of 10
But since the server still use power of 2, we need to show the same numbers

But at least we use the proper standard IEC unit that are explicit
2015-01-15 14:06:17 +01:00
Olivier Goffart
863731fd6a Revert "Utility: Use SI units"
This reverts commit 7445fa7ef7.
and commit f654c53c35.

The server still use wrong powers, so we still need to use the same
2015-01-15 13:56:51 +01:00
Olivier Goffart
c9f1b3229b Add Folder Wizard: fix wording
(Relates #2663)
2015-01-15 13:55:48 +01:00
Olivier Goffart
2b8b204cfc SelectiveSyncDialog::estimatedSize: return qint64 because -1 in case of error 2015-01-15 13:07:16 +01:00
Olivier Goffart
264471af43 csync: cleanup some unused error code 2015-01-15 12:19:06 +01:00
Olivier Goffart
e31514f769 csync propfind: Rename the directDownload property
The owncloud server has a different name because if it was named the same
it would break the 1.7 client

Issue #2614
2015-01-15 11:52:55 +01:00
Olivier Goffart
08d3ae9f02 csync_statedb: Have more granular error reporting when the loaddb fails
In order to distiguish error from sqlite_open or from the integrity check

Issue #2673
2015-01-15 11:36:24 +01:00
Olivier Goffart
f654c53c35 fixing testOctetsToString 2015-01-15 09:58:40 +01:00
Jenkins for ownCloud
7121b64c59 [tx-robot] updated from transifex 2015-01-15 01:25:25 -05:00
Roeland Jago Douma
cd0c9b2ddb Sharedialog: More error checking 2015-01-14 19:47:25 +01:00
Roeland Jago Douma
b80bbe6587 Sharedialog: more const 2015-01-14 19:36:42 +01:00
Roeland Jago Douma
879d41bf2d Sharedialog: Fix spinners and passwordfield
The password field now show correct info when a password is entered etc.
Maybe we should have an extra info part where we state that the user needs to
press enter to submit the password
2015-01-14 19:08:04 +01:00
Roeland Jago Douma
7b1cfd69d7 Sharedialog: use QProgressIndicator
This is a merge from the movie in the original commit (which was local) to the
QProgressIndicator. However, on all connections I tested it, it did not add
much since the API is in gernal pretty quick. So maybe we can just remove this.
2015-01-14 18:42:56 +01:00
Daniel Molkentin
ff695f08f7 Merge pull request #2704 from remixtj/master
Fix for issue #2703
2015-01-14 17:48:08 +01:00
Luca Lorenzetto
ef9f2a965d Fix for issue #2703 2015-01-14 17:39:14 +01:00
Olivier Goffart
ac0e8b1fe1 Qt 4 fix 2015-01-14 16:30:10 +01:00
Olivier Goffart
da0f7317b4 Wizard: Show the size of the folders that will be downloaded
Part of #2580
2015-01-14 16:11:07 +01:00
Roeland Jago Douma
3e81839af5 Sharedialog: Removed duplicted code
Handling of updated shares is identical from users and groups
2015-01-14 15:27:15 +01:00
Christian Kamm
0af5574951 Propagate upload: code cleanup 2015-01-14 15:20:02 +01:00
Olivier Goffart
0ae9055ea6 Propagator upload: Fix UploadDevice::seek 2015-01-14 15:08:09 +01:00
Olivier Goffart
885aafcea3 SelectiveSync dialog: Show the sizes of the folder 2015-01-14 15:08:09 +01:00
Olivier Goffart
7445fa7ef7 Utility: Use SI units 2015-01-14 15:08:09 +01:00
Markus Goetz
a544133d73 Propagator: Guard access to BandwidthManager
Shouls fix #2623
2015-01-14 14:28:47 +01:00
Christian Kamm
b3c02798a3 Propagator: Use FILE_SHARE_DELETE on Windows. #2070 #2597 2015-01-14 14:16:05 +01:00
Roeland Jago Douma
0bd6eb1792 Sharedialog: fix changes due to rebase 2015-01-14 13:51:02 +01:00
Olivier Goffart
3ec19ee355 Propatage upload: Preload the chunk in memory and close the file
This should solve #2675 and #1981

By preloading the chunks in memory before sending them, we don't keep the
file open and therefore we let other program open the file for writing.

If the file is modified between two chunks, we detect that and abort anyway
2015-01-14 13:46:51 +01:00
Olivier Goffart
0215b250af UploadDevice: mark overrided method as Q_DECL_OVERRIDE 2015-01-14 13:46:51 +01:00
Olivier Goffart
6a0c9fdd34 Propagate upload: Change the default chunk size to 5MiB and make chunk upload parallel
The server is slow to process each chunk. As a result the time between
the chunks is not neglectible. Therefore we gain a lot of time by
uploading the chunks in parallel. So the bandwitdh is used when the
server is waiting between chunks.
2015-01-14 13:46:51 +01:00
Olivier Goffart
7f1593c5d7 PropagateUpload: The PUTJob owns the chunk device, so make it a QScopedPointer instead of a QSharedPointer 2015-01-14 13:46:51 +01:00
Roeland Jago Douma
e420a689dc Sharedialog: More reply checking and removing some duplicated code 2015-01-14 13:43:01 +01:00
Roeland Jago Douma
9addd56f9b Sharedialog: follow correct behavior for files when editing permissions 2015-01-14 13:43:01 +01:00
Roeland Jago Douma
a7e69a5dc5 Sharedialog: Started parsing server replies 2015-01-14 13:43:01 +01:00
Roeland Jago Douma
f6a83d5de2 ShareDialog: UI is different for files/dirs
Bunch of if statements to make sure that we do not display delete/create on
files.
2015-01-14 13:43:01 +01:00
Roeland Jago Douma
d1d8a40acf Sharedialog: fix unused var compiler warnings 2015-01-14 13:39:07 +01:00
Roeland Jago Douma
cb18dfaaef Sharedialog: Of course users can also have create and delete privileges 2015-01-14 13:39:07 +01:00
Roeland Jago Douma
a22a03e501 ShareDialog: Group sharing is now also possible
Basically the same functionality as for user sharing. Maybe it would be wise to
merge the two functionalities. Should be rather straight forward if we also
merge the UI parts.
2015-01-14 13:39:06 +01:00
Roeland Jago Douma
9a35b5670e ShareDialog: Allow sharing with users
This commit needs a lot of cleaning up. And a lot of error checking needs to be
added. However it is now possible to change and add new shares with users.
Sharing with groups should be just copy paste.

Also the UI needs some love.
2015-01-14 13:39:06 +01:00
Roeland Jago Douma
017b54f9a8 Sharedialog: Allow modifications of permission for users 2015-01-14 13:39:06 +01:00
Christian Kamm
9b7e6cc5c1 Fix warnings.
* remove Unused variable
* zorder for spacers makes no sense
2015-01-14 11:28:53 +01:00
Klaas Freitag
209276efa8 ShareDialog: Moved open slot from Application object to Gui object.
Also set auto delete flag for the dialog explicitely.
2015-01-13 13:50:41 +01:00
Jenkins for ownCloud
d2fc3e8023 [tx-robot] updated from transifex 2015-01-13 02:06:12 -05:00
Jenkins for ownCloud
1afdeb7216 [tx-robot] updated from transifex 2015-01-13 01:25:24 -05:00
Klaas Freitag
b754ffb047 Nautilus: Add a context menu that opens the sharing dialog. 2015-01-12 14:49:22 +01:00
Klaas Freitag
89eb4727b4 Nautilus overlays: Add a script to patch the branding name into pyhton script. 2015-01-12 14:49:22 +01:00
Daniel Molkentin
5619947685 Relocate Windows shell extensions
The directory was redundant
2015-01-12 14:40:42 +01:00
Daniel Molkentin
31e584e3e3 Fix win32 build 2015-01-12 13:53:40 +01:00
Klaas Freitag
ad09f6491b ShareDialog: Fix const ref for arguments. 2015-01-12 11:35:11 +01:00
Klaas Freitag
efbe033bfb Sharedialog: Fix merge problem (use AccountPtr) plus cleanup. 2015-01-12 11:30:02 +01:00
Klaas Freitag
2c6f0950f6 Merge pull request #2674 from rullzer/filebrowser_integration
Add Sharing from the desktop, SocketAPI and Dialog.
2015-01-12 11:16:28 +01:00
Roeland Jago Douma
b680788f48 Sharedialog: Allow setting and retrieving of experiation data for public urls 2015-01-12 10:14:45 +01:00
Daniel Molkentin
5e0d4ab31d Further Windows compile fix 2015-01-12 09:50:37 +01:00
Daniel Molkentin
488f993f45 Fix compilation on Windows 2015-01-12 09:40:11 +01:00
Jenkins for ownCloud
876407e2e7 [tx-robot] updated from transifex 2015-01-12 01:25:23 -05:00
Roeland Jago Douma
811cbc27c0 Sharedialog: Construct correct public url for existing shares 2015-01-11 14:16:49 +01:00
Daniel Molkentin
214f925b2f Merge pull request #2692 from owncloud/typo
fix typo
2015-01-11 14:12:43 +01:00
Volkan Gezer
cefa31eb82 fix typo
suggested by transifex translator
2015-01-11 14:07:04 +01:00
Roeland Jago Douma
25e90ff658 Sharedialog: use Q_FOREACH 2015-01-11 13:56:23 +01:00
Roeland Jago Douma
fa390299f9 Added Q_FUNC_INFO at several places 2015-01-11 13:41:15 +01:00
Roeland Jago Douma
accb036507 Removed some unused outcommented code 2015-01-11 13:36:45 +01:00
Roeland Jago Douma
44690ff596 ShareDialog: fixed "" -> QString 2015-01-11 13:27:32 +01:00
Roeland Jago Douma
e20f819c1d Sharedialog: QString("") -> QString() 2015-01-11 13:24:40 +01:00
Roeland Jago Douma
1d011a2f9a ShareDialog: make visible text translatable 2015-01-11 13:22:48 +01:00
Roeland Jago Douma
bc84a78b0f ShareDialog: Made slot arguments const 2015-01-11 11:19:12 +01:00
Daniel Molkentin
6034bd0946 Wizard: Never attempt to hide server page
The wizard code used to call hide() on hardcoded wizards.
This means that for a brief moment, the first page with the URL
(disabled line edit) may be seen. I think that's completely
legitimate from a feedback perspective. The alternative would
be to unhide on error, but this is rather unelegant...
2015-01-11 07:38:09 +01:00
Jenkins for ownCloud
6abe714dff [tx-robot] updated from transifex 2015-01-11 01:25:22 -05:00
Jenkins for ownCloud
37606dab4b [tx-robot] updated from transifex 2015-01-10 01:25:25 -05:00
Markus Goetz
f9b98d6d1d OS X: Fix exclude file install 2015-01-09 14:38:27 +01:00
Klaas Freitag
786a877986 SocketAPI: Some cleanups plus added some consts 2015-01-09 11:44:01 +01:00
Jenkins for ownCloud
b637ae1e53 [tx-robot] updated from transifex 2015-01-09 04:26:16 -05:00
Jenkins for ownCloud
cc8a54d314 [tx-robot] updated from transifex 2015-01-09 01:25:28 -05:00
Daniel Molkentin
c86d8e5acf Clean up BSD support patch 2015-01-08 22:40:47 +01:00
Daniel Molkentin
4a819026df Merge pull request #2634 from ryo-on/netbsd-support
Support NetBSD like FreeBSD or Linux.
2015-01-08 22:35:44 +01:00
Olivier Goffart
7671ae8df7 Application: Initialize the folderman after we checked for existance
So we don't start the SocketAPI if we are going to quit.
We also do not log any message anymore before we install the hooks

Should solve #2666
2015-01-08 16:52:23 +01:00
Daniel Molkentin
94d0c28f69 Merge pull request #2629 from owncloud/accountstate
Refactor Account in preparation for multi account feature
2015-01-08 15:39:09 +01:00
Daniel Molkentin
df555d5321 Merge remote-tracking branch 'origin/master' into accountstate
Conflicts:
	src/cmd/cmd.cpp
2015-01-08 15:38:41 +01:00
Daniel Molkentin
c3468b7ed6 Merge remote-tracking branch 'origin/master' into accountstate
Conflicts:
	src/gui/owncloudsetupwizard.cpp
	src/gui/owncloudsetupwizard.h
	src/libsync/propagatedownload.cpp
	src/libsync/propagatedownload.h
2015-01-08 15:33:39 +01:00
Olivier Goffart
bbf0e7c0a5 owncloudcmd: add --unsyncedfolders to test selective sync 2015-01-08 15:27:02 +01:00
Daniel Molkentin
3f5c1d2ade Merge pull request #2678 from chrodan/master
Hide Ignored files in context menu
2015-01-08 14:29:36 +01:00
Daniel Molkentin
dd063d0207 Add hack to make old themes work 2015-01-08 14:21:58 +01:00
Christoph Dann
309ff2997c potential fix for #1865
Do not show ignored files in context menu
2015-01-08 11:42:14 +01:00
Daniel Molkentin
8e8ca97eec Fix build 2015-01-08 09:42:26 +01:00
Jenkins for ownCloud
b734958ab9 [tx-robot] updated from transifex 2015-01-08 01:25:22 -05:00
Daniel Molkentin
51d7559a2c Simplify checkDowngradeAdvised logic
Also, show() and back() belong into slotConnectionCheck only
2015-01-07 18:22:44 +01:00
Daniel Molkentin
5c4f706fe4 Setup Wizard: Make sure to reset auth type when URL changes 2015-01-07 18:01:18 +01:00
Daniel Molkentin
7ac32a19b5 Do not show the HTTP-reconnect popup when its not warranted
Fixes usability issues in the workaround of #2607
2015-01-07 18:01:11 +01:00
Daniel Molkentin
6e4da53e31 Merge pull request #2638 from owncloud/add-slash-as-ignored-character
fix link and add slash as bad character
2015-01-07 15:36:09 +01:00
Olivier Goffart
8e3dbcb7c0 SocketAPi: use absoluteFilePath unstead of canonicalFilePath
Because canonicalFilePath is way too slow.

Issue #2671
2015-01-07 14:37:05 +01:00
Jenkins for ownCloud
5287984307 [tx-robot] updated from transifex 2015-01-07 01:25:23 -05:00
Jenkins for ownCloud
5539f1d498 [tx-robot] updated from transifex 2015-01-06 02:06:11 -05:00
Jenkins for ownCloud
e8cce4d1a1 [tx-robot] updated from transifex 2015-01-06 01:25:30 -05:00
Olivier Goffart
ab0bc75e43 PropagateUploadFileQNAM::slotUploadProgress: Fix inverted condition
( Apply this commit 2d8053a9df )
2015-01-05 17:32:12 +01:00
Olivier Goffart
2d8053a9df Dolphin plugin for KF5 2015-01-05 17:23:36 +01:00
Markus Goetz
c4dd64940e Update VERSION.cmake 2015-01-05 15:47:27 +01:00
Olivier Goffart
414ac5433d Merge branch '1.7'
Conflicts:
	binary
	doc/accountsetup.rst
	doc/architecture.rst
	doc/navigating.rst
	doc/owncloudcmd.rst
	doc/troubleshooting.rst
2015-01-05 14:40:53 +01:00
Olivier Goffart
b2c01ffe21 SyncEngine: Show an error when a file name is not encoded with valid UTF-8
... instead of uploading the file with replacement character, and asserting
on the next sync.

Issue #2649

If the file or folder on the file system has a name with invalid UTF-8,
We would convert the name to utf-8, and the conversion would result in
replacement character placeholder.  And we would upload that file on the server
with that name, and save it with this name on the database.
Fix this issue by showing an error to the user for invalid files.
2015-01-05 13:54:31 +01:00
Olivier Goffart
517dea6958 accountsettings: Use right palette when using reversed palette
Issue #2654

The problem is that the WindowsVistaStyle does something wierd with the palette
when drawing the text, and we should do the same then.
2015-01-05 12:17:05 +01:00
Jenkins for ownCloud
225e6c6b9f [tx-robot] updated from transifex 2015-01-05 01:25:21 -05:00
Jenkins for ownCloud
1dd4fecffb [tx-robot] updated from transifex 2015-01-04 02:06:13 -05:00
Jenkins for ownCloud
5f2645b84a [tx-robot] updated from transifex 2015-01-04 01:25:22 -05:00
Jenkins for ownCloud
fc4b11e224 [tx-robot] updated from transifex 2015-01-03 01:25:19 -05:00
Jenkins for ownCloud
cf3383dd59 [tx-robot] updated from transifex 2015-01-02 01:25:21 -05:00
Jenkins for ownCloud
ead6ba50e7 [tx-robot] updated from transifex 2015-01-01 01:25:23 -05:00
Carla Schroder
7127b989c6 Update navigating.rst 2014-12-31 14:50:54 -08:00
Carla Schroder
3fc755d92f Markup fixes 2014-12-31 14:48:17 -08:00
Carla Schroder
0dc43e5211 Markup corrections 2014-12-31 14:46:22 -08:00
Carla Schroder
4ddbb17a11 Update architecture.rst
Markup corrections
2014-12-31 14:37:28 -08:00
Carla Schroder
bfe31645ab Markup fixes 2014-12-31 14:34:45 -08:00
Carla Schroder
09f843727d Update and correct desktop client manual
Conflicts:
	doc/accountsetup.rst
	doc/architecture.rst
	doc/navigating.rst
	doc/owncloudcmd.rst
2014-12-31 14:31:35 -08:00
Carla Schroder
191a6b7d2b Merge pull request #2656 from owncloud/clienttweaks
Update and correct desktop client manual
2014-12-31 11:29:52 -08:00
Carla Schroder
096511fc89 Update and correct desktop client manual 2014-12-31 11:27:52 -08:00
Jenkins for ownCloud
85687ce4a2 [tx-robot] updated from transifex 2014-12-31 01:25:23 -05:00
Carla Schroder
a6bfb23d20 Update troubleshooting.rst
Markup corrections
2014-12-30 18:41:50 -08:00
Carla Schroder
c2f3413dc5 Merge pull request #2652 from RealRancor/fix_typos
Fixed typos in docs
2014-12-29 13:41:22 -08:00
Carla Schroder
755daeb024 Update troubleshooting.rst
More markup fixes
2014-12-29 10:09:42 -08:00
Carla Schroder
26233ac078 Update troubleshooting.rst
Markup fixes
2014-12-29 10:07:52 -08:00
RealRancor
2ee2876855 Fixed typos in docs 2014-12-29 18:11:12 +01:00
Roeland Jago Douma
ee2e6e5dce Also allow sharing if we only sync a part 2014-12-28 20:13:11 +01:00
Roeland Jago Douma
facb6b2e81 Check box public link now works multiple times
When deleting a share (public link) and recreating it we need to store the new
id.
2014-12-28 20:13:11 +01:00
Roeland Jago Douma
ec3c83c0c9 Minor sharedialog.ui fixes 2014-12-28 20:13:10 +01:00
Roeland Jago Douma
0ad4fb7273 Create valid poststring 2014-12-28 20:13:10 +01:00
Roeland Jago Douma
763d5f67cd Some error checking on SHARE sockeAPI command 2014-12-28 20:13:10 +01:00
Roeland Jago Douma
b7d4c997a3 Fix rebase of branch 2014-12-28 20:13:10 +01:00
Alfie "Azelphur" Day
bd7f45e398 Everything works now, albeit without error checking. 2014-12-28 20:13:10 +01:00
Alfie "Azelphur" Day
748440ced3 Initial push for filebrowser integration, not finished yet but it's a start :) 2014-12-28 20:13:10 +01:00
Carla Schroder
5c7795bb63 Merge pull request #2646 from owncloud/notefix
Markup correction
2014-12-26 08:18:57 -08:00
Carla Schroder
f7ebd2e793 Markup correction 2014-12-26 08:17:15 -08:00
Jenkins for ownCloud
9298891d00 [tx-robot] updated from transifex 2014-12-25 01:25:22 -05:00
Jenkins for ownCloud
3a1dc6f23e [tx-robot] updated from transifex 2014-12-24 01:25:22 -05:00
Morris Jobke
e250153204 fix link and add slash as bad character 2014-12-23 11:25:55 +01:00
Daniel Molkentin
a2e5a6628d v1.7.1 2014-12-22 11:38:07 +01:00
Daniel Molkentin
6b3278cd8e Amend and edit ChangeLog for 1.7.1 2014-12-22 11:38:07 +01:00
Ryo ONODERA
16c4864e67 Support NetBSD like FreeBSD or Linux. 2014-12-21 23:00:56 +09:00
Jenkins for ownCloud
11f225aada [tx-robot] updated from transifex 2014-12-21 01:25:21 -05:00
Roeland Jago Douma
cd8affc255 Resepct theming when no syncs are configure 2014-12-19 15:08:49 +01:00
Roeland Jago Douma
8677fb18bb Manged folder list in the tray icon is now sorted
We are using a QHash to store all the folder objects. This does not allow for
easy sorting and looks weird to the user. Now they are first inserted into a
temp QMap to sort them properly.
2014-12-19 13:59:50 +01:00
Jenkins for ownCloud
8979981553 [tx-robot] updated from transifex 2014-12-19 01:25:31 -05:00
Christian Kamm
4fa212c43b CSync callbacks: Don't use global account. 2014-12-18 15:39:51 +01:00
Christian Kamm
a9da5ebff6 Wizard: Sometimes preserve folders when folder config is skipped.
* When folder config is used, other folder definitions are always
  removed.
* Fix a bug with the wizard becoming stuck when 'skip folder config'
  is used.
2014-12-18 15:39:51 +01:00
Christian Kamm
38ebfec1fb Use global Account/AccountState less.
* Use a shared pointer to Account everywhere to ensure
  the instance stays alive long enough for a sync to terminate
* Folder is now tied to an AccountState
* SyncEngine and OwncloudPropagator tie to an Account and use that
  for all jobs they run

Issue: Since the setup wizard currently always replaces the
account, it will always wipe all folder definitions, even when
the actual changes to the account were minor.
2014-12-18 15:39:51 +01:00
Christian Kamm
6c7acd585e Account: Split into libsync/Account and gui/AccountState.
This allows all the account state information to live in gui
while the sync-relevant data stays in libsync.

I also moved quotainfo to gui since it depends on the account state.
2014-12-18 15:39:51 +01:00
Olivier Goffart
e8efaa5ed8 Direct download URL: Fix resuming
The server might support resuming, so don't always erase the temporary file
and pass the startSize, so the temporary file will be remove if the server
does not support it after all (because it is not sending the "bytes" header

Also pass the expected etag for consistency even if it's not used in this case.
2014-12-18 12:13:12 +01:00
Jenkins for ownCloud
5a83b30303 [tx-robot] updated from transifex 2014-12-18 01:25:29 -05:00
Daniel Molkentin
986b23856f Make setup page usable from shibboleth
Second patch to address #2607
2014-12-17 18:13:59 +01:00
Olivier Goffart
96872e2b3b Download: When direct URL don't work, retry through webdav 2014-12-17 14:28:13 +01:00
Daniel Molkentin
42ffed3f57 Wizard: Show server errors when coming from shibboleth
The wizard needs to be restored and rewound to the first page

First patch to address #2607
2014-12-17 14:24:07 +01:00
Christian Kamm
a006c6962c Move account state related logic into Account.
The account state is now managed mostly by the Account itself
instead of through Application. The gui can still control whether
an account is signed out or not.
2014-12-17 12:01:10 +01:00
Jenkins for ownCloud
cc3f7995fb [tx-robot] updated from transifex 2014-12-17 02:06:12 -05:00
Jenkins for ownCloud
3f399225fa [tx-robot] updated from transifex 2014-12-17 01:25:22 -05:00
Markus Goetz
dc5d0e367c OS X: Improve installer
This should mostly fix #2105 and #2044
2014-12-16 19:08:12 +01:00
Olivier Goffart
a2803e4f5f csync_update: do not force writing on the db for directory with a changed date
Fixes #2584
2014-12-16 13:02:32 +01:00
Olivier Goffart
b1d392e415 Download job: allow redirect on direct download link
Issue #2614
2014-12-16 11:51:25 +01:00
Olivier Goffart
cbf00e9378 Connection Validator: Fix connection warning
The timeout signal does not exist.
Timeout is handled as a normal network arror.
2014-12-16 11:48:15 +01:00
Olivier Goffart
414838cae8 Settings dialog: remove the code that was updating the account icon
I just wanted to fix the warning:
 QObject::connect: No such slot OCC::SettingsDialog::slotUpdateAccountIcon(QIcon) in settingsdialog.cpp:108

It turns out we don't need anymore the signal or any of the code that
was updating the account icon in the settings dialog since it we now have a fixed icon
2014-12-16 11:36:52 +01:00
Olivier Goffart
3ee14164db network jobs: Refactor the redirect handling in AbdtractNetworkJob
Move the redirect handling from CheckServerJob to AbstractNetworkJob, so we can
later use it in any job  (in preparation for task #2614)
2014-12-16 11:27:02 +01:00
Daniel Molkentin
63712de170 1.7.1 rc1 2014-12-16 07:30:23 +01:00
Jenkins for ownCloud
43673d6694 [tx-robot] updated from transifex 2014-12-16 01:25:24 -05:00
Markus Goetz
f195648b90 OS X: Fix overlay icons
a3e7f513e6 broke them.
2014-12-15 11:34:44 +01:00
Jenkins for ownCloud
06f77acfa1 [tx-robot] updated from transifex 2014-12-15 01:25:23 -05:00
Jenkins for ownCloud
f04a693fbe [tx-robot] updated from transifex 2014-12-14 01:25:21 -05:00
Jenkins for ownCloud
c012711763 [tx-robot] updated from transifex 2014-12-13 01:25:29 -05:00
Klaas Freitag
c6daa8e59b Overlays: In case of folders, make sure to append slashes at end.
This fixes #2373
2014-12-12 16:38:07 +01:00
Klaas Freitag
7cc6c1a10f Theme: Add a missing dot. 2014-12-12 13:37:02 +01:00
Klaas Freitag
7f73cc1694 Theme: split the about string apart to have small translation units. 2014-12-12 13:33:38 +01:00
Jenkins for ownCloud
87973ac692 [tx-robot] updated from transifex 2014-12-12 01:25:26 -05:00
Daniel Molkentin
9a13ec736d Fix OS X compilation 2014-12-11 15:08:13 +01:00
Christian Kamm
1a3041690f ConValidator: Simplify and cleanup.
* This way using it with multiple accounts will be easier.
* Timeouts on the authed requests are handled.
2014-12-11 14:48:01 +01:00
Christian Kamm
84e5ad7346 FolderMan: Delete old journal file when adding folder. #2606 2014-12-11 12:28:01 +01:00
Christian Kamm
4559bb5553 Fix counting of affected files. #1132
* Also ensure the maximum is always >= the current value.
* Take care to handle the ULLONG_MAX value that's sometimes used
  as _completedFileCount.
2014-12-11 11:33:42 +01:00
Jenkins for ownCloud
2d51a78ee7 [tx-robot] updated from transifex 2014-12-11 01:25:23 -05:00
Carla Schroder
95a380ae9e fix typos 2014-12-10 08:24:12 -08:00
Christian Kamm
d8c59fcb73 Use connection validator to ping the server. #2485
* Stop the quota job from having an effect on account status
  as it can sometimes take a long time to reply. See #2485 and
  owncloud/core#12744.

* Instead of indirectly using the quota job, use the connection
  validator to regularly ping the server with a basic PROPFIND for
  'getlastmodified' on /.
  This request was usually fast for users even when the quota PROPFIND
  was slow.
2014-12-10 13:40:11 +01:00
Christian Kamm
8dff17d78b Rename: Fix icon location in theme.qrc. 2014-12-10 13:12:06 +01:00
Christian Kamm
53d5de685c Merge remote-tracking branch 'origin/1.7'
Conflicts:
	src/gui/folder.cpp
	src/gui/folder.h
	src/libsync/networkjobs.cpp
	src/libsync/owncloudpropagator.h
	src/libsync/propagatedownload.cpp
2014-12-10 13:01:36 +01:00
Jenkins for ownCloud
f0ce8b8fd4 [tx-robot] updated from transifex 2014-12-10 01:25:29 -05:00
Daniel Molkentin
aeb1f10621 NSIS: Reload shell after registering shellextension, use blackslashes
It also registers and unregisters the shell extensions properly and
forces explorer to reload/unload the DLLs so they can be removed.
This obsoletes #2377.

Fixes #2487
Fixes #2377
2014-12-09 23:52:07 +01:00
Olivier Goffart
a3e7f513e6 SocketAPI: use the canonical path
Issue #2591
2014-12-09 20:48:51 +01:00
Klaas Freitag
8b63a6f29b Adding changelog 2014-12-09 20:27:38 +01:00
Klaas Freitag
133a8ec225 Added a fixme for an edge case detected by QuickCheck. 2014-12-09 17:02:51 +01:00
Klaas Freitag
131747ea4b Bumped version to 1.7.1 beta1 2014-12-09 15:25:37 +01:00
Daniel Molkentin
e982790ad5 Mirall-- 2014-12-09 09:27:47 +01:00
Jenkins for ownCloud
a7f1f886d3 [tx-robot] updated from transifex 2014-12-09 01:25:28 -05:00
Daniel Molkentin
d034f10af3 Fix compilation 2014-12-08 19:25:57 +01:00
Daniel Molkentin
a2b817f0c0 mirall.qrc -> client.qrc 2014-12-08 18:00:29 +01:00
Daniel Molkentin
bce6d44e06 README: Fix typo 2014-12-08 17:57:09 +01:00
Daniel Molkentin
d5f2c36abd Mirall -> (Desktop) Client 2014-12-08 17:54:32 +01:00
Daniel Molkentin
d86b3f04b1 Merge branch 'master' into rename_client 2014-12-08 17:44:04 +01:00
Klaas Freitag
72a90199db Wizard: Removed superflous text, as it is already in the header.
This fixes mirall#2358
2014-12-08 11:12:15 +01:00
Jenkins for ownCloud
e69702799f [tx-robot] updated from transifex 2014-12-08 01:25:21 -05:00
Jenkins for ownCloud
118aead9b9 [tx-robot] updated from transifex 2014-12-07 01:25:25 -05:00
Klaas Freitag
49bb861045 Removed useless debug output 2014-12-06 12:37:53 +01:00
Klaas Freitag
1d6661e7e4 Fix the number of displayed items in progress display for removes.
This fixes mirall#1132

A variable that counts the affected items of the propagator operation
done on a item was added to SyncFileItem. Usually that is 1 because
most operations affect only the item itself. But for removes, the
number can be higher for directories (one remove removes a whole tree).

Some rearrangements were needed.
2014-12-06 12:31:45 +01:00
Jenkins for ownCloud
a43173fa90 [tx-robot] updated from transifex 2014-12-06 01:25:23 -05:00
Jenkins for ownCloud
d2a24b5186 [tx-robot] updated from transifex 2014-12-05 01:25:29 -05:00
Christian Kamm
40f44c2389 DB: Delete corrupt database. #2547
* Also use readonly DB access for SocketAPI.
2014-12-04 15:35:55 +01:00
Olivier Goffart
441b5bd1dc Setup Wizard: remove all folder definition before starting a new sync
Issue #1989
2014-12-04 15:18:27 +01:00
Christian Kamm
dc2f0d59cb FolderWizard: Clean up naming of 'add folder' button. #2371 2014-12-04 10:47:26 +01:00
Christian Kamm
4dcfacf2d5 Fix compile. :/ 2014-12-04 09:59:24 +01:00
Christian Kamm
b7485106ef NetworkJobs: Set timeout to 5 minutes everywhere. 2014-12-04 09:54:17 +01:00
Christian Kamm
f82893496b Fix typo. 2014-12-04 09:54:15 +01:00
Christian Kamm
c418e58f88 Etag job scheduling: Silence warnings, make prettier. 2014-12-04 09:52:13 +01:00
Jenkins for ownCloud
054e557531 [tx-robot] updated from transifex 2014-12-04 02:06:11 -05:00
Jenkins for ownCloud
3020dc75ab [tx-robot] updated from transifex 2014-12-04 01:25:22 -05:00
Klaas Freitag
9ea359de52 GUI: Check if there are sync folders configured and how proper msg.
This fixes #2264
2014-12-03 17:11:42 +01:00
Klaas Freitag
c5daf7d1b6 Mac installer: Make the installer background brandable for MacOSX. 2014-12-03 14:37:59 +01:00
Christian Kamm
b7d7f424c5 FolderMan: only touch _currentSyncFolder when done #2407
Also simplity terminateSyncProcess() to always terminate the
*current* sync run. Only one can be running at a time anyway.
2014-12-03 13:46:37 +01:00
Daniel Molkentin
e1fa6f1a0d fix_frameworks is no longer required
This is taken care of by macdeployqt.py, which is
run during "make install"
2014-12-03 13:41:12 +01:00
Olivier Goffart
a23e0fef8d Update binary submodule 2014-12-03 11:18:01 +01:00
Olivier Goffart
0fd0b08c09 Windows shell integration: Always release the lock before calling win32 API
May help for 2515
2014-12-03 09:11:38 +01:00
Jenkins for ownCloud
ce1690b450 [tx-robot] updated from transifex 2014-12-03 01:25:27 -05:00
Markus Goetz
46bd473664 Folders: Move ETag check scheduling to FolderMan
Only 1 check per time is able to run now.
For #2553
Might improve #2479 #2485 #2534
2014-12-02 22:32:54 +01:00
Daniel Molkentin
6030fec6cb Fix typo 2014-12-02 15:08:15 +01:00
Daniel Molkentin
b7323dc403 Merge branch 'master' into rename_client 2014-12-02 14:33:28 +01:00
Daniel Molkentin
c6d74d6c12 Fix typo 2014-12-02 14:33:17 +01:00
Daniel Molkentin
a42709f814 Namespace fixes 2014-12-02 14:20:13 +01:00
Daniel Molkentin
3016844dd7 Merge branch 'master' into rename_client
Conflicts:
	README.md
	src/gui/folderman.cpp
	src/gui/settingsdialog.cpp
	src/libsync/accessmanager.cpp
	src/libsync/propagateupload.h
2014-12-02 13:37:22 +01:00
Olivier Goffart
8fbb55a0c8 Wizard: Fix escaping of error message.
An url can contains % signs, so if it does, the errors formating was wrong
because of the use of QString::args

Also, the error is in html format, and we need to let the message box know
that, otherwise we will just see <br/>
2014-12-02 10:22:46 +01:00
Olivier Goffart
f046a7e7fe Wizard: Attempts to really close the database when starting the backup
Still for issue #1989
2014-12-02 10:22:46 +01:00
Markus Goetz
92ce707268 Bandwidth: Fix issue with removed download jobs
The measuring broke when a job that is currently measuring was removed.
2014-12-02 09:37:48 +01:00
Daniel Molkentin
3f5887cc03 Merge pull request #2565 from owncloud/accountsettings_itemsontop
Refactor generic settings dialog
2014-12-01 15:01:45 +01:00
Olivier Goffart
fb3f5d86cf Fix compilation after merge 2014-12-01 14:41:39 +01:00
Olivier Goffart
512492bf30 Merge remote-tracking branch 'origin/1.7'
Conflicts:
	src/libsync/propagatedownload.cpp
2014-12-01 14:37:47 +01:00
Olivier Goffart
2477c3914e csync_update: Ignore a difference of time of exactly one hour
Issue #2438
2014-12-01 13:53:30 +01:00
Daniel Molkentin
afee1ee1c0 Make all ptr-based members either const or check for their existance 2014-12-01 13:08:49 +01:00
Daniel Molkentin
f233593909 Add missing accounts icon 2014-12-01 13:07:44 +01:00
Olivier Goffart
3253cc38b2 Propagator upload: Mark error while opening the file as SoftError
Because otherwise a lot of error are shown to the user when
the user deletes a directory that is syncing

Task #1981
2014-12-01 12:22:52 +01:00
Olivier Goffart
b154e1baa1 Nautilus shell integration: Use fallback when XDG_RUNTIME_DIR is not defined
Same fallback as in Qt5

Task #2477
2014-12-01 12:06:09 +01:00
Daniel Molkentin
714599aeaa Refactor generic settings dialog
- move items on top like on Mac OS (right is free for accounts now)
- The account icon no longer reflects the current status (in prep for multi-account)
2014-12-01 11:37:06 +01:00
Jenkins for ownCloud
119a9983a9 [tx-robot] updated from transifex 2014-11-30 01:25:22 -05:00
Jenkins for ownCloud
8866494c94 [tx-robot] updated from transifex 2014-11-29 02:06:10 -05:00
Jenkins for ownCloud
2e06b4be66 [tx-robot] updated from transifex 2014-11-29 01:25:23 -05:00
Jenkins for ownCloud
0ec2e71f58 [tx-robot] updated from transifex 2014-11-28 01:25:25 -05:00
Olivier Goffart
fc3a8b944e Propagator: Don't forget to mark the direcotry as finished if its first job fails
Otherwise we would go ahead and propagate the content of the directory
2014-11-27 15:36:13 +01:00
Olivier Goffart
2ed2ef3b28 Propagator QNAM: Fix resuming
We forgot to account the fact that we could have been resuming when
comparing the size of the Content-lenght to the size of the temporary file
2014-11-27 14:50:49 +01:00
Markus Goetz
a3c5da90d2 Update issue_template.md 2014-11-27 13:10:14 +01:00
Olivier Goffart
e7e91b6931 Revert "Folder: Don't blindly trigger sync on first EtagJob result"
We need to do a sync even if the etag was empty because we do not know
if this is because the etag really changed or because it was new.

Also, some part of the code rely on this fact to schedule a sync.

The fact that there is two sync with 30 sec at the beginning is not
a big problem, because we also need to do the sync the put the directory
etag in the db.

This reverts commit 1c001ee138.
2014-11-27 12:50:36 +01:00
Olivier Goffart
1f9d02e7fa Shibboleth: Fix our implemtnation of CookieJar::deleteCookie
It was deleting too many cookies.
That function is virtual in Qt5 and is used when adding cookie.
But some Shibboleth have several cookies with the same name, and we need to keep them.

Our implementaiton was meant to delete all the shiboleth cookies when we want to log out
2014-11-27 12:26:59 +01:00
Markus Goetz
0895ca3e4a Update issue_template.md 2014-11-27 12:09:06 +01:00
Jenkins for ownCloud
2ee70db7cd [tx-robot] updated from transifex 2014-11-26 01:25:24 -05:00
Olivier Goffart
c9c1547813 Compile with Qt4
(QSharedPointer::reset is only in Qt5)
2014-11-25 16:24:47 +01:00
Olivier Goffart
9a8c868793 Propagator upload: Remove debug output 2014-11-25 15:34:06 +01:00
Olivier Goffart
13ec5da84e neon jobs: Start them in their thread. 2014-11-25 15:08:32 +01:00
Klaas Freitag
3e34d000f2 Propagator: Add the chunk size to PUT requests. 2014-11-25 10:21:33 +01:00
Olivier Goffart
12203461f0 Import the dolphin plugin 2014-11-24 15:06:08 +01:00
Olivier Goffart
a337564864 shell_integration/windows/OCShellExtensions/OCUtilTest: remove
We do not need it anymore
2014-11-24 14:53:37 +01:00
Olivier Goffart
734db6f932 propagate Upload: Let the poll job count for a job
In order to avoid that there are many concurrent poll jobs that takes
all the QNAM channel and causes timeouts of queued jobs
2014-11-24 13:33:13 +01:00
Olivier Goffart
d76e3c0488 Parallel chunk upload: abort all chunks if one of them errors out 2014-11-24 12:05:25 +01:00
Olivier Goffart
c0de20dda0 UploadDevice: reduce debug verbosity 2014-11-24 12:05:25 +01:00
Markus Goetz
79c37f9fe4 Poll Jobs: Properly use DB index
Why do we sometimes use 0-based, sometimes 1-based indices?
2014-11-24 11:35:39 +01:00
Jenkins for ownCloud
7f520a6f28 [tx-robot] updated from transifex 2014-11-24 01:25:22 -05:00
Jenkins for ownCloud
23f72ecf7b [tx-robot] updated from transifex 2014-11-23 01:25:22 -05:00
Jenkins for ownCloud
8c57e7621b [tx-robot] updated from transifex 2014-11-22 01:25:37 -05:00
Olivier Goffart
c460b3f3be Bandwith manager: It needs do be initialiazed after the limits of the propagator 2014-11-21 16:55:46 +01:00
Markus Goetz
1c001ee138 Folder: Don't blindly trigger sync on first EtagJob result
For #2352
2014-11-21 16:47:15 +01:00
Markus Goetz
fab82107bb OS X: Don't use hardcoded name in packages file 2014-11-21 16:34:30 +01:00
Olivier Goffart
78362af168 Compile with TOKEN_AUTH_ONLY
(QtGui is not included in that case)
2014-11-21 12:15:41 +01:00
Olivier Goffart
1c58b75ac2 Merge branch '1.7' 2014-11-21 11:08:20 +01:00
Olivier Goffart
41568c885d Propagator: only check the content-lenght if it is there
If content-lenght is 0, don't chack it is the size we recieved.
It can be zero when using HTTP chunk encoding.

Also do not remove the temporary file so it can be re-used on the next sync
and ask for a new sync immediatly to re-do the sync.

Fixup the fix to task #2528
2014-11-21 11:03:14 +01:00
Jenkins for ownCloud
dba2efe367 [tx-robot] updated from transifex 2014-11-21 02:52:45 -05:00
Christian Kamm
e3b07f569a FolderWatcherTest: Use Utility::usleep. 2014-11-21 08:21:36 +01:00
Klaas Freitag
65a307970b Propagator: Compare the actual file size with the request content length
The values must match. Otherwise the request did succeed, but the file
was not downloaded completely.

This fixes https://github.com/owncloud/mirall/issues/2528
2014-11-20 18:49:34 +01:00
Christian Kamm
3e3ca14b4c Print ssl library version only on Qt >=5.0.0. 2014-11-20 13:46:44 +01:00
Christian Kamm
8b45d1c928 Sync: Change force-sync interval to 2h everywhere. #2297 2014-11-20 13:38:32 +01:00
Christian Kamm
0fe7a69b39 FolderWatcher: Detect own changes. #2297 2014-11-20 13:16:29 +01:00
Christian Kamm
6d09f1b6c0 Folder watcher now reports changing paths instead of dirs. 2014-11-20 12:51:16 +01:00
Christian Kamm
1ada20ac7b Linux folderwatcher: Get full path of changed file. #2297 2014-11-20 12:42:59 +01:00
Christian Kamm
d04eedeb8d OSX: Trust the file watcher. #2297
* Use a bigger default force sync interval (2h)
* Allow the file watcher to schedule a sync while a sync for
  the same file is running.
2014-11-20 12:42:59 +01:00
Christian Kamm
f275002ebe Merge branch '1.7' 2014-11-20 12:41:06 +01:00
Christian Kamm
d4e0941c27 Windows filewatcher: switch to ReadDirectoryChangesW.
Based on danimo's #2454 fix for #2455 and related to #2297.
2014-11-20 12:36:17 +01:00
Christian Kamm
9dc57359b9 csync db files: Hide after some commit/transactions. #2461
The shm and wal files are only created later.
2014-11-20 12:30:04 +01:00
Jenkins for ownCloud
06b31d7cf0 [tx-robot] updated from transifex 2014-11-20 01:25:20 -05:00
Christian Kamm
4d7b8bdb25 Merge remote-tracking branch 'origin/1.7'
Conflicts:
	OWNCLOUD.cmake
	test/CMakeLists.txt
	test/testfolderwatcher.h
2014-11-19 14:45:25 +01:00
Christian Kamm
421a8cc6b7 Windows: Make unit tests compile. 2014-11-19 14:18:37 +01:00
Christian Kamm
3a448fda91 Windows mingw32: Fix finding of windres binary. 2014-11-19 14:16:56 +01:00
Christian Kamm
3706c76622 useLegacyJobs: Fix logic. 2014-11-19 10:31:42 +01:00
Olivier Goffart
9a6710e330 Propagator: add a bit of documentation comments 2014-11-18 17:54:53 +01:00
Olivier Goffart
1113980b20 Propagator: Change the scheduler
It still needs to be a bit optimized, but it allows to paralelized jobs between directories

(this is required to paralelize the mkcol)
2014-11-18 17:35:31 +01:00
Markus Goetz
e890c4ae1b OS X: Move previous fix to proper location 2014-11-17 18:30:32 +01:00
Markus Goetz
7ada625161 OS X: Fix packages file 2014-11-17 17:48:29 +01:00
Olivier Goffart
7d8dd54b19 Merge pull request #2504 from owncloud/revert-2454-fswatcher_readdirectorychanges_port
Revert "WiP: switch to ReadDirectoryChangesW"
2014-11-17 11:11:39 +01:00
Olivier Goffart
0b275c4933 Revert "WiP: switch to ReadDirectoryChangesW" 2014-11-17 11:11:13 +01:00
Olivier Goffart
e529bbed90 Merge pull request #2454 from owncloud/fswatcher_readdirectorychanges_port
switch to ReadDirectoryChangesW
2014-11-17 09:43:29 +01:00
Jenkins for ownCloud
39e97779ec [tx-robot] updated from transifex 2014-11-17 01:25:22 -05:00
Jenkins for ownCloud
629d46ca25 [tx-robot] updated from transifex 2014-11-16 01:25:22 -05:00
Daniel Molkentin
c5a35ad56f Merge pull request #2499 from owncloud/revert-2412-nsis_shortcuts_all_users
Revert "Install shortcuts for all users"
2014-11-15 21:05:05 +01:00
Daniel Molkentin
1e94161ec1 Revert "Install shortcuts for all users" 2014-11-15 21:04:33 +01:00
Daniel Molkentin
6f78ff200c Merge pull request #2412 from owncloud/nsis_shortcuts_all_users
Install shortcuts for all users
2014-11-15 20:09:29 +01:00
Daniel Molkentin
02e96484a8 Install shortcuts for all users 2014-11-15 17:07:39 +01:00
Jenkins for ownCloud
67b0e4dd15 [tx-robot] updated from transifex 2014-11-15 01:25:23 -05:00
Olivier Goffart
a3b21022af new bandwith limiting: Do a test on the Qt version to activate it
We need Qt 5.3.3.
If the compiled qt version is Qt 5 but smaller than Qt 5.3.3, do a runtime
check.

OWNCLOUD_NEW_BANDWIDTH_LIMITING is still there for a special setup in which
we patch Qt with the patches
2014-11-14 17:29:28 +01:00
Olivier Goffart
ad92e7b888 Move UploadDevice to the right header 2014-11-14 16:40:13 +01:00
Olivier Goffart
c73522de2e Remove ChunkBlock
It is not in used
2014-11-14 16:39:39 +01:00
Olivier Goffart
14f5e8e32e Move all the neon code to the _legacy files 2014-11-14 16:13:50 +01:00
Olivier Goffart
f3797abecf Fix the PropfindJob
-the namespace mangling was wrong
-And the way we read the reply did not work
2014-11-14 15:03:48 +01:00
Markus Goetz
5b7ec19778 SyncEngine: Also output the neon version 2014-11-14 15:02:09 +01:00
Jenkins for ownCloud
e71c617bfd [tx-robot] updated from transifex 2014-11-14 01:25:20 -05:00
Olivier Goffart
1310bef528 Port the propagate mkdir to QNAM
This way we can make it parallel
2014-11-13 18:57:07 +01:00
Jenkins for ownCloud
f1432992d3 [tx-robot] updated from transifex 2014-11-13 01:25:30 -05:00
Markus Goetz
348b7bf4eb SyncEngine: Output versions used 2014-11-12 09:21:37 +01:00
Markus Goetz
30479cc5a2 Wizard: Properly show error message 2014-11-12 09:21:37 +01:00
Jenkins for ownCloud
1ba1bdec2d [tx-robot] updated from transifex 2014-11-12 01:25:29 -05:00
Daniel Molkentin
8993af4378 Bump version in readme 2014-11-12 00:32:28 +01:00
Daniel Molkentin
7246011b62 Merge pull request #2459 from owncloud/typo
fix typo
2014-11-12 00:09:22 +01:00
Daniel Molkentin
058d868edd Merge remote-tracking branch 'origin/1.7' 2014-11-12 00:09:00 +01:00
Daniel Molkentin
9a58d0e559 Merge pull request #2469 from owncloud/fixing_indent
Fixing indent and make nautilus script python3 compatible.
2014-11-12 00:08:46 +01:00
Daniel Molkentin
281c0e1553 Merge branch 'master' into rename_client
Conflicts:
	CMakeLists.txt
	src/gui/main.cpp
	src/libsync/accessmanager.cpp
	src/libsync/accessmanager.h
	src/libsync/owncloudpropagator_p.h
2014-11-12 00:07:59 +01:00
Daniel Molkentin
52a63a65ef Merge pull request #2110 from owncloud/crashreporter
Implement CrashReporter using libcrashreporter-qt
2014-11-12 00:01:58 +01:00
Daniel Molkentin
cdac8d56d5 Merge remote-tracking branch 'origin/master' into crashreporter
Conflicts:
	src/libsync/utility.cpp
	src/libsync/utility.h
2014-11-11 23:53:38 +01:00
Olivier Goffart
b04cb23ed5 t8.pl: fix the test for me
On localhost, the other file (the bigger one) was downloaded first
2014-11-11 16:38:20 +01:00
Olivier Goffart
7b4be209aa MOVE: fix moving with special character.
The Destination header need to be %-encoded
2014-11-11 16:27:06 +01:00
Olivier Goffart
c712b7c46c Parallel MOVE by porting the job to qnam 2014-11-11 16:09:01 +01:00
Olivier Goffart
22c6892870 DELETE: Error out if the HTTP code is not 204 2014-11-11 14:32:25 +01:00
Olivier Goffart
134650eb44 Parallel DELETE 2014-11-11 13:19:29 +01:00
Olivier Goffart
506ba022f1 Split propagator_qnam.cpp into propagateupload.cpp and propagatedownload.cpp 2014-11-11 12:17:10 +01:00
Klaas Freitag
fc6d572a6c Make compile against Qt4 2014-11-11 10:10:46 +01:00
Jenkins for ownCloud
e6eb91c5f9 [tx-robot] updated from transifex 2014-11-11 02:06:12 -05:00
Jenkins for ownCloud
ced986e010 [tx-robot] updated from transifex 2014-11-11 01:25:22 -05:00
Jenkins for ownCloud
cde9b3ac85 [tx-robot] updated from transifex 2014-11-10 01:25:22 -05:00
Daniel Molkentin
b54c079766 Adjust issue urls 2014-11-09 23:38:07 +01:00
Daniel Molkentin
2db17a57d2 Fix header names 2014-11-09 23:25:57 +01:00
Daniel Molkentin
a992c5b8d3 Fix build 2014-11-09 23:10:18 +01:00
Daniel Molkentin
58f1a9bb30 Rename: Adjust documentation 2014-11-09 23:09:52 +01:00
Daniel Molkentin
269b59c2ba More CMake adjustments 2014-11-09 22:58:24 +01:00
Daniel Molkentin
d462c8838f Adapt and expand README 2014-11-09 22:58:16 +01:00
Daniel Molkentin
1297ac77b9 Fix tests 2014-11-09 22:37:56 +01:00
Daniel Molkentin
d57d3cf1f6 Drop Mirall from strings 2014-11-09 22:35:29 +01:00
Daniel Molkentin
ae85aa33fd Adjust namespaces 2014-11-09 22:34:07 +01:00
Daniel Molkentin
f2eadacf09 Remove "Mirall" from class names 2014-11-09 22:30:29 +01:00
Daniel Molkentin
9ebc41ed6f Remove "Mirall" from cmake project files 2014-11-09 22:30:05 +01:00
hefee
f9dfdd58df Fixing indent and make nautilus script python3 compatible. 2014-11-09 16:59:01 +01:00
Jenkins for ownCloud
c9f9388ef6 [tx-robot] updated from transifex 2014-11-09 01:25:21 -05:00
Olivier Goffart
7ae6712d56 Add a few Q_DECL_OVERRIDE 2014-11-08 11:21:48 +01:00
Olivier Goffart
98a283b4ec Fix clang warnings 2014-11-08 11:21:48 +01:00
Olivier Goffart
d524f6b395 Fix compilation errors after merge 2014-11-08 11:11:05 +01:00
Olivier Goffart
6b716683e2 Merge the long PUT Poll URL feature with the new sql backend 2014-11-08 11:09:50 +01:00
Olivier Goffart
ba2c33af0b Fix the il branch merge: Move the bandwidthmanager to libsync 2014-11-08 10:52:14 +01:00
Olivier Goffart
de11f602d5 Merge remote-tracking branch 'origin/il'
Conflicts:
	csync/src/csync_private.h
	src/CMakeLists.txt
	src/gui/folder.cpp
	src/libsync/owncloudpropagator.cpp
	src/libsync/owncloudpropagator.h
	src/libsync/propagator_qnam.cpp
	src/libsync/propagator_qnam.h
	src/libsync/syncengine.cpp
	src/libsync/syncengine.h
	src/mirall/syncjournaldb.cpp
2014-11-08 10:48:36 +01:00
Jenkins for ownCloud
b8cb180e4b [tx-robot] updated from transifex 2014-11-08 01:25:22 -05:00
Volkan Gezer
260c8e0227 fix typo 2014-11-07 17:51:15 +01:00
Daniel Molkentin
e579504181 Merge pull request #2370 from owncloud/icons-overlay-doc
Add section on Overlay Icons to 'Using the Synchronization Client'
2014-11-07 16:52:26 +01:00
Daniel Molkentin
7c034b427e Handle invalid handle & fix an issue found during code review 2014-11-07 14:52:31 +01:00
Jenkins for ownCloud
08868594ae [tx-robot] updated from transifex 2014-11-07 01:25:32 -05:00
Daniel Molkentin
f25d175b5d Merge remote-tracking branch 'origin/1.7' 2014-11-06 19:54:20 +01:00
Daniel Molkentin
cc6e548a78 Merge pull request #2419 from owncloud/updater
Update and correct doc/autoupdate.rst
2014-11-06 19:53:33 +01:00
Daniel Molkentin
89670e5ce4 Folderwatcher_win: handle conversion error 2014-11-06 12:54:33 +01:00
Daniel Molkentin
96a7118d05 WiP: switch to ReadDirectoryChangesW 2014-11-06 12:04:33 +01:00
Carla Schroder
2c1f31cecb Update autoupdate.rst
Corrected configuration file location
2014-10-29 09:56:17 -07:00
Klaas Freitag
ef16c409ef Merge pull request #2393 from svkurowski/issue-2215
Switch monochrome systray icon color depending on systray brightness
2014-10-29 14:54:33 +01:00
Klaas Freitag
b9b9f3c136 Propagator: Schedule a resync immediately if file is modified during upload 2014-10-29 13:10:56 +01:00
Christian Kamm
4e20a02fe5 SyncJournalDB: Add filesize column to metadata.
* Alter table to include column.
* Make get/set in SyncJournalDB store and load it.
* Make csync recover the stat_t's size member from it.
2014-10-29 09:53:36 +01:00
Daniel Molkentin
dc1e73dcb7 Merge remote-tracking branch 'origin/1.7'
Conflicts:
	src/libsync/syncjournaldb.cpp
	test/CMakeLists.txt
2014-10-28 23:27:58 -04:00
Carla Schroder
94be12b9e4 Merge branch 'updater' of https://github.com/owncloud/mirall into updater 2014-10-28 15:01:34 -07:00
Carla Schroder
1862fb77ff Correct Linux section on disabling update notifications 2014-10-28 14:57:18 -07:00
Carla Schroder
06b619f0ed Update autoupdate.rst
Typo correction
2014-10-28 12:19:05 -07:00
Carla Schroder
f5cc6cfd07 Fix typos and clean up wording 2014-10-28 11:56:49 -07:00
Carla Schroder
0f5cf00e35 Update The Automatic Updater manual page with current information 2014-10-28 11:52:58 -07:00
Daniel Molkentin
24b07aaaef Merge pull request #2402 from metrix78/spelling
correct spelling on user is empty error.
2014-10-26 21:52:03 -04:00
Brandon Coleman
ece1100d65 options are required at the beginning of owncloudcmd. 2014-10-26 15:33:50 -05:00
Brandon Coleman
e5b03634ae correct spelling on user is empty error. 2014-10-25 11:01:58 -05:00
Sascha Vincent Kurowski
59f18583d1 Switch monochrome systray icon color depending on systray brightness.
https://github.com/owncloud/mirall/issues/2215

As of version 10.10 Yosemite, Mac OS X offers the user the option to use
a dark version of the dock and menu bar. The systray icon was black even
on the dark menu bar, thus rendering it nearly impossible to spot.
2014-10-24 21:52:41 +02:00
Carla Schroder
b5da8423a6 Update navigating.rst 2014-10-22 19:24:19 -07:00
Carla Schroder
c3de0a2d4b Add section on Overlay Icons to 'Using the Synchronization Client' 2014-10-22 19:20:58 -07:00
Christian Kamm
c832226aa1 Merge remote-tracking branch 'origin/1.7' into master 2014-10-22 12:25:58 +02:00
Christian Kamm
a20375372d Blacklist: Don't ignore error files forever. #2247
Instead try them again regularly, but don't show the user any
error messages if the error persists.
2014-10-22 12:25:18 +02:00
Markus Goetz
7e3d2029e0 OS X: Fix bundle creation after merge 2014-10-22 12:06:43 +02:00
Christian Kamm
7ae0338f5c Merge remote-tracking branch 'origin/1.7'
Conflicts:
	src/CMakeLists.txt
	src/cmd/cmd.cpp
	src/gui/socketapi.h
	src/libsync/syncengine.h
	test/CMakeLists.txt
2014-10-22 10:41:55 +02:00
Jenkins for ownCloud
b2460fbee2 [tx-robot] updated from transifex 2014-10-22 02:06:40 -04:00
Jenkins for ownCloud
bce6916c13 [tx-robot] updated from transifex 2014-10-17 02:07:06 -04:00
Jenkins for ownCloud
557c63b372 [tx-robot] updated from transifex 2014-10-15 02:06:11 -04:00
Markus Goetz
8febd90f2a Propagator: Be less verbose 2014-10-08 09:07:29 +02:00
Markus Goetz
bf18ecae13 Propagator: Fix bw limiting bug, be less verbose in logging 2014-10-07 17:42:50 +02:00
Markus Goetz
89971925ca Propagator: Be more verbose about propagator choice 2014-10-07 14:55:30 +02:00
Markus Goetz
2ba007ee4f CMake: Add else() case for Qt detection 2014-10-07 14:46:55 +02:00
Markus Goetz
d1cc3c34c9 Propagator: Relative download limit 2014-10-07 14:46:55 +02:00
Markus Goetz
de79f9338a Propagator: Bandwidth limiting for new propagator 2014-10-07 14:46:55 +02:00
Olivier Goffart
5471bfd5a8 No need to update mtime and etag after a move
The server keeps the mtime and etag anyway.
And changing the mtime also changes the etag and so make other clients re-download
the file instead of detecting the move
2014-10-07 09:13:13 +02:00
Jenkins for ownCloud
dce30a27b9 [tx-robot] updated from transifex 2014-09-28 02:06:12 -04:00
Markus Goetz
1543899795 Upload Chunking: Fix progress DB values 2014-09-25 11:32:54 +02:00
Markus Goetz
6d94acee8f permissions: Fix root properties if no permissions used 2014-09-25 10:24:51 +02:00
Jenkins for ownCloud
37a7ad4795 [tx-robot] updated from transifex 2014-09-23 02:08:06 -04:00
Olivier Goffart
d7d241196e tests: add the source dir in the include paths 2014-09-22 08:58:35 +02:00
Jenkins for ownCloud
fa606b38b7 [tx-robot] updated from transifex 2014-09-21 02:06:11 -04:00
Olivier Goffart
9ae4d45243 Restart the sync when we detect we need to redo a sync
Fixes #1968
Relates #2038

(cherry picked from commit a84b7dc27e)

Conflicts:
	src/mirall/owncloudpropagator.h
	src/mirall/propagator_qnam.cpp
	src/mirall/syncengine.h
2014-09-19 11:51:17 +02:00
Olivier Goffart
1cd5681967 permissions: Remember the permissions for the root folder 2014-09-19 10:58:52 +02:00
Olivier Goffart
eab488e64f compile after merge 2014-09-18 19:58:04 +02:00
Olivier Goffart
50e718b1e7 Merge branch '1.7'
Conflicts:
	src/CMakeLists.txt
	src/cmd/cmd.cpp
	src/gui/folder.cpp
	src/gui/socketapi.cpp
	translations/mirall_ca.ts
	translations/mirall_cs.ts
	translations/mirall_de.ts
	translations/mirall_el.ts
	translations/mirall_en.ts
	translations/mirall_es.ts
	translations/mirall_es_AR.ts
	translations/mirall_et.ts
	translations/mirall_eu.ts
	translations/mirall_fa.ts
	translations/mirall_fi.ts
	translations/mirall_fr.ts
	translations/mirall_gl.ts
	translations/mirall_hu.ts
	translations/mirall_it.ts
	translations/mirall_ja.ts
	translations/mirall_nl.ts
	translations/mirall_pl.ts
	translations/mirall_pt.ts
	translations/mirall_pt_BR.ts
	translations/mirall_ru.ts
	translations/mirall_sk.ts
	translations/mirall_sl.ts
	translations/mirall_sv.ts
	translations/mirall_th.ts
	translations/mirall_tr.ts
	translations/mirall_uk.ts
	translations/mirall_zh_CN.ts
	translations/mirall_zh_TW.ts
2014-09-18 17:10:21 +02:00
Olivier Goffart
7c36e5c0e6 parallel chunk upload: allow "true" for the value of OWNCLOUD_PARALLEL_CHUNK 2014-09-18 14:29:38 +02:00
Olivier Goffart
1b62ed1e7e Parallel chunk upload: Fix progress 2014-09-18 12:36:30 +02:00
Jürgen Weigert
c3d41f0d48 Fixed https://github.com/owncloud/mirall/issues/1699
Missing copyright headers added.
2014-09-18 12:26:55 +02:00
Jenkins for ownCloud
9daacd7aee [tx-robot] updated from transifex 2014-09-18 02:06:15 -04:00
Christian Kamm
ece11dc3d8 Updater: Add "didn't check for updates" message. #2175
Don't show "Checking server..." when we are not.
2014-09-17 11:41:04 +02:00
Olivier Goffart
66595a3597 Parallel chunk uploads
This does not include progress indicator
2014-09-16 17:40:42 +02:00
Daniel Molkentin
6e42ee1bd4 Merge pull request #2194 from tim-vandecasteele/fix-apple-build
Fix apple build.
2014-09-12 14:39:26 +02:00
Tim Vandecasteele
f3cc614427 Fix apple build.
The apple build was broken because the elseif in the CMakeLists is never triggered.

Some code was not properly adapted for the new qtmacgoodies.

Some paths were not adapted to new split.
2014-09-12 14:24:26 +02:00
Markus Goetz
4960890d70 Propagator: Commit the DB for Poll Jobs 2014-09-11 12:05:35 +02:00
Olivier Goffart
76f0f3cbf2 csync_vio_local on windows: fix overflow when computing the size of file > 4GiB
MAXDWORD is 0xFFFFFFFF, so if we add one, it overflows and is 0.
We need to cast it to 64 bits before
2014-09-11 11:10:58 +02:00
Markus Goetz
f5f04bcc4b SyncEngine: Always return _renameTarget in destination() if possible
We want to do this since the instruction is actually ERORR, not RENAME.
2014-09-05 10:07:24 +02:00
Olivier Goffart
c232411e96 uploading: make sure to cast to uint64 to avoid integer overflow 2014-09-04 13:46:01 +02:00
Jenkins for ownCloud
fef37b0222 [tx-robot] updated from transifex 2014-08-31 02:06:16 -04:00
Dominik Schmidt
7ad557f2f8 Add crash reporter to osx package and don't build it with BUILD_LIBRARIES_ONLY enabled 2014-08-30 14:45:39 +02:00
Dominik Schmidt
ef70052b0e Package installer if it was built 2014-08-30 14:12:40 +02:00
Dominik Schmidt
202426f536 Make crash reporter application name branded 2014-08-30 11:05:52 +02:00
Dominik Schmidt
d240415671 Make crash reporter logo branded 2014-08-30 11:05:34 +02:00
Dominik Schmidt
1aca22b5f8 Make crash reporter executable branded 2014-08-30 10:46:09 +02:00
Jenkins for ownCloud
ff970ee3f5 [tx-robot] updated from transifex 2014-08-30 02:06:15 -04:00
Jenkins for ownCloud
51a46a8ad7 [tx-robot] updated from transifex 2014-08-30 01:25:30 -04:00
Klaas Freitag
bcff1ced5e Merge branch '1.7'
Conflicts:
	src/CMakeLists.txt
	src/cmd/cmd.cpp
	src/gui/folderman.cpp
	src/gui/wizard/owncloudadvancedsetuppage.cpp
	src/libsync/account.cpp
2014-08-29 20:40:33 +02:00
Dominik Schmidt
38ff7d87c8 Hide crashreporter config option if not build with crashreporter enabled 2014-08-29 17:07:31 +02:00
Markus Goetz
7ec0c52439 Poll URL: Use trimmed() on response 2014-08-29 13:58:33 +02:00
Jenkins for ownCloud
905dd20d0c [tx-robot] updated from transifex 2014-08-29 01:25:25 -04:00
Dominik Schmidt
6abaad1ae8 Show crash reporter if trying to read the crash-reporter-enabled config crashes 2014-08-28 16:23:14 +02:00
Dominik Schmidt
89aec52503 Add checkbox to general settings to disable the crash reporter 2014-08-28 16:19:17 +02:00
Markus Goetz
2aef6a2174 Poll URL: Don't delete from DB in case of 503 2014-08-28 13:44:21 +02:00
Dominik Schmidt
b8e8d975aa Add CRASHREPORTER_SUBMIT_URL to OWNCLOUD.cmake 2014-08-28 12:08:07 +02:00
Markus Goetz
6e0330ff65 SyncEngine: Error out if we don't have a sync dir 2014-08-28 11:47:40 +02:00
Markus Goetz
3aa7178382 PollJob: Increase timeout 2014-08-28 11:27:08 +02:00
Dominik Schmidt
439bf7641e Use include path for libcrashreporter-qt instead of lengthy relative include 2014-08-28 11:11:42 +02:00
Dominik Schmidt
34042028b3 Add CRASHREPORTER_SUBMIT_URL define and default it to some placeholder owncloud url 2014-08-28 11:05:46 +02:00
Jenkins for ownCloud
44a281534d [tx-robot] updated from transifex 2014-08-28 01:25:30 -04:00
Daniel Molkentin
cf12a56b4c Merge remote-tracking branch 'origin/1.7'
Conflicts:
	src/gui/socketapi.cpp
2014-08-27 18:22:07 +02:00
Daniel Molkentin
2c6324e3e5 Fix tests 2014-08-27 10:27:29 +02:00
Jenkins for ownCloud
e442ba863a [tx-robot] updated from transifex 2014-08-27 01:25:26 -04:00
Dominik Schmidt
2b4849a2fa Add crash reporter using libcrashreporter-qt 2014-08-26 18:15:13 +02:00
Dominik Schmidt
17e16f5e79 Add "Crash" entry to systray if started with --debug 2014-08-26 15:46:24 +02:00
Dominik Schmidt
b176ff6626 Don't use CMAKE_INSTALL_PREFIX for RPATH 2014-08-26 15:19:46 +02:00
Daniel Molkentin
e5471d8318 Build after merge 2014-08-26 14:33:21 +02:00
Daniel Molkentin
902bb7a198 Merge remote-tracking branch 'origin/master' into move_lib_to_sep_dir
Conflicts:
	src/CMakeLists.txt
	src/gui/accountsettings.cpp
	src/gui/folderwizard.cpp
	src/gui/settingsdialog.cpp
	src/libsync/syncengine.h
2014-08-26 11:29:42 +02:00
Markus Goetz
b037e6356e TokenCredentials, DirectDownload: Rework cookie handling
That way we don't override QNAM's cookie jar behaviour
2014-08-22 13:46:22 +02:00
Markus Goetz
824628061b Propagator: Don't have cookies overriden by QNetworkCookieJar
The direct download feature has its own cookies, don't let QNAM override them.
2014-08-22 12:12:46 +02:00
Markus Goetz
449abace66 CSync: Ignore OS X files with hidden flag 2014-08-21 16:43:24 +02:00
Daniel Molkentin
4fc044d368 Merge branch 'master' into move_lib_to_sep_dir
Conflicts:
	cmake/modules/NSIS.template.in
	src/CMakeLists.txt
	src/creds/shibboleth/authenticationdialog.cpp
	src/creds/shibboleth/authenticationdialog.h
	src/gui/owncloudgui.cpp
	src/libsync/creds/shibboleth/authenticationdialog.cpp
	src/libsync/creds/shibboleth/authenticationdialog.h
	src/libsync/mirallaccessmanager.cpp
	src/mirall/authenticationdialog.cpp
	src/mirall/authenticationdialog.h
2014-08-12 21:08:44 +02:00
Markus Goetz
8cd1d43798 TokenCredentials: Don't overwrite Cookie header
If the request already had a cookie header, there was a reason for it.
Don't blindly overwrite it.
2014-08-11 15:40:12 +02:00
Markus Goetz
acd3df33b6 Merge branch 'long_running_put' into il 2014-08-08 12:00:26 +02:00
Markus Goetz
1bc8fd9b49 CMake: Don't need translations with token auth compile 2014-08-08 11:59:14 +02:00
Klaas Freitag
12f5e4b46e csync oC Util: set field flag correctly to avoid etag memleak.
The fields varialbe should contain or'ed flags of the fields set
in the csync_vio_file_stat_t struct. The problem was that the field
for CSYNC_VIO_FILE_STAT_FIELDS_PERM was assigned rather than or'ed
which makes the release function for the struct not freeing the
etag memory => memleak.
2014-08-07 23:14:21 +02:00
Olivier Goffart
8df14ee845 Long running put: fix some bugs 2014-07-29 22:56:36 +02:00
Olivier Goffart
550d6d66d1 Long Running Put: Better error reporting 2014-07-29 15:51:22 +02:00
Olivier Goffart
7480d34742 Long Running Put: store into the database so they can be resumed at startup 2014-07-28 15:37:37 +02:00
Olivier Goffart
04cc513bbd Poll for long running PUT: WIP
Some PUT, may take a long time on the server to process (for example, the
last chunk). It may take more time that the timeout.
So in that case the server may reply with an url that we can poll for the etag

This patch is still work in progress
2014-07-25 13:30:48 +02:00
Daniel Molkentin
bb32831a60 Merge remote-tracking branch 'origin/master' into move_lib_to_sep_dir
Conflicts:
	src/gui/folderman.cpp
2014-07-17 11:31:45 +02:00
Daniel Molkentin
ea690c285b Make NSIS installer work with new structure 2014-07-14 13:12:31 +02:00
Daniel Molkentin
28879712e9 Make krazy target work again 2014-07-14 12:19:32 +02:00
Daniel Molkentin
3c2e43d883 Merge remote-tracking branch 'origin/master' into move_lib_to_sep_dir 2014-07-14 10:50:53 +02:00
Daniel Molkentin
5041880854 Try to handle BUILD_LIBRARIES_ONLY correctly
Also, try to fix OS X build
2014-07-11 12:36:01 +02:00
Daniel Molkentin
2c904afd04 OS X explicitly requires the neon include path to be set 2014-07-11 12:11:04 +02:00
Daniel Molkentin
2cc13fb74a Fix includes in mac specific headers 2014-07-11 11:38:01 +02:00
Daniel Molkentin
df3c3bca02 Split into three separate projects: library, gui and cmd 2014-07-11 11:07:31 +02:00
591 changed files with 63676 additions and 45414 deletions

1
.gitignore vendored
View File

@@ -2,7 +2,6 @@
*build*/
*flymake*
CMakeLists.txt.user*
*.patch
*~
*.autosave
doc/_build/*

3
.gitmodules vendored
View File

@@ -7,3 +7,6 @@
[submodule "binary"]
path = binary
url = git://github.com/owncloud/owncloud-client-binary.git
[submodule "src/3rdparty/libcrashreporter-qt"]
path = src/3rdparty/libcrashreporter-qt
url = git://github.com/dschmidt/libcrashreporter-qt.git

View File

@@ -1,12 +1,7 @@
cmake_minimum_required(VERSION 2.6)
cmake_policy(VERSION 2.8.0)
project(mirall)
set(PACKAGE "mirall")
set( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
include(Warnings)
project(client)
set(OEM_THEME_DIR "" CACHE STRING "Define directory containing a custom theme")
if ( EXISTS ${OEM_THEME_DIR}/OEM.cmake )
@@ -14,15 +9,38 @@ if ( EXISTS ${OEM_THEME_DIR}/OEM.cmake )
else ()
include ( ${CMAKE_SOURCE_DIR}/OWNCLOUD.cmake )
endif()
# need this logic to not mess with re/uninstallations via macosx.pkgproj
if(${APPLICATION_REV_DOMAIN} STREQUAL "com.owncloud.desktopclient")
set(APPLICATION_REV_DOMAIN_INSTALLER "com.ownCloud.client")
else()
set(APPLICATION_REV_DOMAIN_INSTALLER ${APPLICATION_REV_DOMAIN})
endif()
if (NOT DEFINED APPLICATION_SHORTNAME)
set ( APPLICATION_SHORTNAME ${APPLICATION_NAME} )
endif()
set(PACKAGE "${APPLICATION_SHORTNAME}-client")
set( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
if(NOT CRASHREPORTER_EXECUTABLE)
set(CRASHREPORTER_EXECUTABLE "${APPLICATION_EXECUTABLE}_crash_reporter")
endif()
include(Warnings)
include(${CMAKE_SOURCE_DIR}/VERSION.cmake)
configure_file( ${CMAKE_SOURCE_DIR}/src/mirall/version.h.in "${CMAKE_CURRENT_BINARY_DIR}/src/mirall/version.h" )
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_BINARY_DIR}/src/mirall/")
# disable the crashrepoter if libcrashreporter-qt is not available or we're building for ARM
if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/3rdparty/libcrashreporter-qt/CMakeLists.txt")
set( WITH_CRASHREPORTER OFF )
endif()
if(NOT WITH_CRASHREPORTER)
message(STATUS "Build of crashreporter disabled.")
endif()
#####
## handle DBUS for Fdo notifications
if( UNIX AND NOT APPLE )
@@ -38,12 +56,12 @@ include(QtVersionAbstraction)
setup_qt()
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
# if we cannot get it from git, directly try .tag (packages)
# this will work if the tar balls have been properly created
# via git-archive.
if (GIT_SHA1)
if (${GIT_SHA1} STREQUAL "GITDIR-NOTFOUND")
file(READ ${CMAKE_SOURCE_DIR}/.tag sha1_candidate)
string(REPLACE "\n" "" sha1_candidate ${sha1_candidate})
@@ -53,7 +71,6 @@ if (${GIT_SHA1} STREQUAL "GITDIR-NOTFOUND")
endif()
endif()
message(STATUS "GIT_SHA1 ${GIT_SHA1}")
endif()
set(SYSCONFDIR ${SYSCONF_INSTALL_DIR})
set(DATADIR ${DATA_INSTALL_DIR})
@@ -85,6 +102,11 @@ if(TOKEN_AUTH_ONLY)
add_definitions(-DTOKEN_AUTH_ONLY=1)
endif()
option(NO_MSG_HANDLER "Don't redirect QDebug outputs to the log window/file" OFF)
if(NO_MSG_HANDLER)
add_definitions(-DNO_MSG_HANDLER=1)
endif()
# this option creates only libocsync and libowncloudsync
option(BUILD_LIBRARIES_ONLY "BUILD_LIBRARIES_ONLY" OFF)
@@ -101,7 +123,27 @@ endif()
#if( UNIX AND NOT APPLE ) # Fdo notifications
# find_package(Qt4 4.7.0 COMPONENTS QtDBus REQUIRED )
#endif()
find_package(Neon REQUIRED)
set(USE_NEON TRUE)
if(HAVE_QT5)
message(STATUS "Using Qt ${Qt5Core_VERSION_MAJOR}.${Qt5Core_VERSION_MINOR}.x")
if (${Qt5Core_VERSION_MAJOR} EQUAL "5")
if (${Qt5Core_VERSION_MINOR} EQUAL "4" OR ${Qt5Core_VERSION_MINOR} GREATER 4)
message(STATUS "We would not require Neon in this setup, compile without!")
set(USE_NEON FALSE)
else()
message(STATUS "Still requiring Neon with this Qt version :-( Qt 5.4 is better!")
endif()
endif()
else()
message(STATUS "If possible compile me with Qt 5.4 which is much faster/better.")
endif()
if (USE_NEON)
find_package(Neon REQUIRED)
endif(USE_NEON)
find_package(OpenSSL 1.0.0 REQUIRED)
if(NOT TOKEN_AUTH_ONLY)
if (Qt5Core_DIR)
@@ -135,11 +177,6 @@ configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
configure_file(test/test_journal.db "${CMAKE_BINARY_DIR}/test/test_journal.db" COPYONLY)
# Copy that logo, the installer uses it later
if(BUILD_OWNCLOUD_OSX_BUNDLE)
install(FILES resources/owncloud_logo_blue.png DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/)
endif()
include(OwnCloudCPack.cmake)
add_definitions(-DUNICODE)
@@ -148,15 +185,17 @@ if( WIN32 )
add_definitions( -D__USE_MINGW_ANSI_STDIO=1 )
endif( WIN32 )
# Handle Translations, pick all mirall_* files from trans directory.
file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/mirall_*.ts)
# Handle Translations, pick all client_* files from trans directory.
file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/client_*.ts)
set(TRANSLATIONS ${TRANS_FILES})
add_subdirectory(csync)
add_subdirectory(src)
if(NOT BUILD_LIBRARIES_ONLY)
add_subdirectory(shell_integration)
add_subdirectory(doc)
add_subdirectory(admin)
endif(NOT BUILD_LIBRARIES_ONLY)
if(UNIT_TESTING)
include(CTest)
@@ -165,7 +204,7 @@ if(UNIT_TESTING)
endif(UNIT_TESTING)
if(BUILD_OWNCLOUD_OSX_BUNDLE)
configure_file(sync-exclude.lst ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/sync-exclude.lst COPYONLY)
install(FILES sync-exclude.lst DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/)
else()
install( FILES sync-exclude.lst DESTINATION ${SYSCONFDIR}/${APPLICATION_SHORTNAME} )
configure_file(sync-exclude.lst bin/sync-exclude.lst COPYONLY)

View File

@@ -5,7 +5,7 @@ direct these to the [mailing list][mailinglist] or our [forum][forum].
We are also available on [IRC][irc].
### Bug Reporting Guidelines
* Important: Report the issue using our [template][template], it includes all the
* __Important__: Report the issue using our [template][template], it includes all the
informations we need to track down the issue.
* This repository is *only* for issues within the ownCloud desktop client.
Issues in other compontents should be reported in their own repositores:
@@ -22,7 +22,7 @@ If your issue appears to be a bug, and hasn't been reported, open a new issue.
Help us to maximize the effort we can spend fixing issues and adding new
features, by not reporting duplicate issues.
[template]: https://raw.github.com/owncloud/mirall/master/issue_template.md
[template]: https://raw.github.com/owncloud/client/master/issue_template.md
[mailinglist]: https://mail.kde.org/mailman/listinfo/owncloud
[forum]: http://forum.owncloud.org/
[irc]: http://webchat.freenode.net/?channels=owncloud&uio=d4
@@ -31,16 +31,16 @@ features, by not reporting duplicate issues.
Thanks for wanting to contribute source code to ownCloud. That's great!
Before we're able to merge your code to mirall, you need to sign
Before we're able to merge your code to ownCloud Desktop Client, you need to sign
our [Contributor Agreement][agreement].
Please read the [Desktop Client Manual][mirallman] and the [Developer
Please read the [Desktop Client Manual][desktopman] and the [Developer
Manuals][devmanual] to get useful infos like how to create your first
application or how to test the ownCloud code with phpunit.
[agreement]: http://owncloud.org/about/contributor-agreement/
[devmanual]: http://owncloud.org/dev/
[mirallman]: http://doc.owncloud.org/desktop/1.1/
[devmanual]: http://owncloud.org/dev
[desktopman]: http://doc.owncloud.org/desktop
## Translations
Please submit translations via [Transifex][transifex].

View File

@@ -17,8 +17,10 @@ else ()
include ( "${CMAKE_SOURCE_DIR}/OWNCLOUD.cmake" )
endif()
set( CRASHREPORTER_EXECUTABLE @CRASHREPORTER_EXECUTABLE@)
set( BUILD_OWNCLOUD_OSX_BUNDLE @BUILD_OWNCLOUD_OSX_BUNDLE@)
if(APPLE AND NOT BUILD_OWNCLOUD_OSX_BUNDLE)
message( FATAL_ERROR "You're trying to build a bundle although you haven't built mirall in bundle mode.\n Add -DBUILD_OWNCLOUD_OSX_BUNDLE=ON")
message( FATAL_ERROR "You're trying to build a bundle although you haven't built the client in bundle mode.\n Add -DBUILD_OWNCLOUD_OSX_BUNDLE=ON")
endif()

View File

@@ -1,6 +1,61 @@
ChangeLog
=========
version 1.7.0 (release 2014-10-xx)
version 1.8.0 (release 2015-02-xx)
* Mac OS: HIDPI support
* Support Sharing from desktop: Added a share dialog that can be
opened by context menu in the file managers (Win, Mac, Nautilus)
Supports public links with password enforcement
* Enhanced usage of parallel HTTP requests for ownCloud 8 servers
* Renamed github repository from mirall to client.
* Mac OS: Use native notification support
* Selective Sync: allow to enforce selective sync in brandings.
* Added ability to build on Windows utilizing MingGW
* SQLite database fixes if running on FAT filesystems
* Improved detection of changing files to upload from local
* Preparations for the muli-account feature
* Fixed experience for Window manager without system tray
* Build with Qt 5.4
* Dropped libneon dependency if Qt 5.4 is available
* Keep files open very short, that avoid lock problems on Windows
especially with office software but also others.
* Merged some NetBSD patches
* Selective sync support for owncloudcmd
* Reorganize the source repository
* Prepared direct download
* Added Crashreporter feature to be switched on on demand
* A huge amount of bug fixes in all areas of the client.
* more than 7000 commits since 1.7.0
version 1.7.1 (release 2014-12-18)
* Documentation fixes and updates
* Nautilus Python plugin fixed for Python 3
* GUI wording fixes plus improved log messages
* Fix hidning of the database files in the sync directories
* Compare http download size with the header value to avoid broken
downloads, bug #2528
* Avoid initial ETag fetch job at startup, which is not needed.
* Add chunk size http header to PUT requests
* Fixed deteteCookie method of our CookieJar, fix for Shibboleth
* Added fallback for distros where XDG_RUNTIME_DIR is undefined
* Fix the setup wizard, bug #1989, #2264
* Fix scheduling of ETag check jobs, bug #2553
* Fix to avoid syncing more than one folder at a time, bug #2407
* Use fife minutes timeout for all network jobs
* Cleanup for Folderwizard wording
* Improve journal check: Remove corrupted journal files, bug #2547
* Fix item count in progress dialog for deletes, bug #1132
* Display correct file count on deletion (#1132)
* Fix reinitializing the folder using the wizard in certain cases (#2606)
* Mac OS: Fixed branding of the pkg file
* Mac OS: Fix display of overlay icons in certain situations (#1132)
* Mac OS: Use a bundled version of OpenSSL (#764, #2600, #2510)
* Win32: improved filesystem watcher
* Win32: Improve threading with shell integration
* Win32: Upgraded to OpenSSL 1.0.1j
* Win32: Improve reliability of Installer, fix removal of Shell Extensions
version 1.7.0 (release 2014-11-07)
* oC7 Sharing: Handle new sharing options of ownCloud 7 correctly.
* Added Selective sync: Ability to unselect server folders which are
@@ -107,7 +162,7 @@ version 1.6.0 (release 2014-05-30 )
* Improve Cookie support (e.g. for cookie-based load-balancers)
* Introduce a general timeout of 300s for network operations
* Improve error handling, blacklisting
* Job-based change propagation, enables faster parallel up/downloads
* Job-based change propagation, enables faster parallel up/downloads
(right now only if no bandwidth limit is set and no proxy is used)
* Significantly reduced CPU load when checking for local and remote changes
* Speed up file stat code on Windows
@@ -120,7 +175,7 @@ version 1.6.0 (release 2014-05-30 )
Qt 5.2 or later
* Forward server exception messages to client error messages
* Mac OS X: Support Notification Center in OS X 10.8+
* Mac OS X: Use native settings dialog
* Mac OS X: Use native settings dialog
* Mac OS X: Fix UI inconsistencies on Mavericks
* Shibboleth: Warn if authenticating with a different user
* Remove vio abstraction in csync
@@ -155,7 +210,7 @@ version 1.5.2 (release 2014-02-26 )
* Shibboleth: Proper invalidation if timeout during sync
* Shibboleth: Do not pop up IdP login immediately when modifying account
* Shibboleth: Avoid auth on restart by storing cookies in the wallet
* Fix license headers
* Fix license headers
version 1.5.1 (release 2014-02-13 )
* Added an auto updater that updates the client if a
@@ -240,7 +295,7 @@ version 1.4.2 (release 2013-10-18 ), csync 0.90.4 required
version 1.4.1 (release 2013-09-24 ), csync 0.90.1 required
* Translation and documentation fixes.
* Fixed error display in settings/status dialog, displays multi
* Fixed error display in settings/status dialog, displays multi
line error messages now correctly.
* Wait up to 30 secs before complaining about missing systray
Fixes bug #949
@@ -321,7 +376,7 @@ version 1.3.0 (release 2013-06-25 ), csync 0.80.0 required
version 1.2.5 (release 2013-04-23 ), csync 0.70.7 required
* [Fixes] NSIS installer fixes
* [Fixes] Fix crash race by making certificateChain() thread safe
* [Fixes] Build with older CMake versions (CentOS/RHEL 6)
* [Fixes] Build with older CMake versions (CentOS/RHEL 6)
* [Fixes] Wording in GUI
* [Fixes] Silently ignore "installed = true" status.php
* Set log verbosity before calling csync_init.
@@ -331,7 +386,7 @@ version 1.2.5 (release 2013-04-23 ), csync 0.70.7 required
version 1.2.4 (release 2013-04-11 ), csync 0.70.6 required
* [Fixes] Clarify string in folder wizard
* [Fixes] Fixed some valgrind warnings
* [Fixes] Ensure that only one sync thread can ever run
* [Fixes] Ensure that only one sync thread can ever run
* [Fixes] Fix default config storage path
* [Fixes] Skip folders with no absolute path
* [Fixes] Allow setting the configuration directory on command line

View File

@@ -1,5 +1,4 @@
set( APPLICATION_NAME "ownCloud" )
#set( APPLICATION_SHORTNAME ${APPLICATION_NAME} )
set( APPLICATION_EXECUTABLE "owncloud" )
set( APPLICATION_DOMAIN "owncloud.com" )
set( APPLICATION_VENDOR "ownCloud" )
@@ -8,5 +7,12 @@ set( APPLICATION_UPDATE_URL "https://updates.owncloud.com/client/" CACHE string
set( THEME_CLASS "ownCloudTheme" )
set( APPLICATION_REV_DOMAIN "com.owncloud.desktopclient" )
set( WIN_SETUP_BITMAP_PATH "${CMAKE_SOURCE_DIR}/admin/win/nsi" )
set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-background.png" CACHE STRING "The MacOSX installer background image")
# set( THEME_INCLUDE "${OEM_THEME_DIR}/mytheme.h" )
# set( APPLICATION_LICENSE "${OEM_THEME_DIR}/license.txt )
option( WITH_CRASHREPORTER "Build crashreporter" OFF )
set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE string "URL for crash repoter" )
set( CRASHREPORTER_ICON ":/owncloud-icon.png" )

View File

@@ -19,7 +19,7 @@ if(APPLE)
set( CPACK_GENERATOR "DragNDrop" )
set( CPACK_SOURCE_GENERATOR "")
set( CPACK_PACKAGE_FILE_NAME ${APPLICATION_NAME}-${CPACK_PACKAGE_VERSION} )
set( CPACK_PACKAGE_ICON ${CMAKE_BINARY_DIR}/src/ownCloud.icns)
set( CPACK_PACKAGE_ICON ${CMAKE_BINARY_DIR}/src/gui/ownCloud.icns)
set( CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/admin/osx/DS_Store.in")
# set( CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/admin/osx/DMGBackground.png" )

View File

@@ -1,9 +1,9 @@
# Mirall
# ownCloud Desktop Client
## Introduction
Mirall is a tool to synchronize files from ownCloud Server with your computer.
It uses OCSync as its syncing backend.
The ownCloud Desktop Client is a tool to synchronize files from ownCloud Server
with your computer.
## Download
@@ -13,19 +13,45 @@ It uses OCSync as its syncing backend.
### Source code
* https://github.com/owncloud/mirall
Tehe ownCloud Desktop Client is developed in Git. Since Git makes it easy to
fork and improve the source code and to adapt it to your need, many copies
can be found on the Internet, in particular on GitHub. However, the
authoritative repository maintained by the developers is located at
https://github.com/owncloud/client.
## Building the source code
Please refer to doc/building.rst, or
[Building the Client](http://doc.owncloud.org/desktop/1.5/building.html)
in the ownCloud client manual.
[Building the Client](http://doc.owncloud.org/desktop/1.7/building.html)
in the ownCloud Desktop Client manual.
## Authors
## Maintainers and Contributors
The maintainers of this repository are:
* Duncan Mac-Vicar P. <duncan@kde.org> (original Mirall author)
* Klaas Freitag <freitag@owncloud.com>
* Daniel Molkentin <danimo@owncloud.com>
* Markus Goetz <guruz@owncloud.com>
* Olivier Goffart <ogoffart@owncloud.com>
ownCloud Desktop Client is developed by the ownCloud community and receives
patches from a variety of authors.
## Reporting issues and contributing
If you find any bugs or have any suggestion for improvement, please
file an issue at https://github.com/owncloud/client/issues. Do not
contact the authors directly by mail, as this increases the chance
of your report being lost.
If you created a patch, please submit a [Pull
Request](https://github.com/owncloud/client/pulls). For non-trivial
patches, we need you to sign the [Contributor
Agreement](https://owncloud.org/contribute/agreement) before
we can accept your patch.
If you want to contact us, e.g. before starting a more complex feature,
you can join us at
[#owncloud-client-dev](irc://irc.freenode.net/#owncloud-client-dev).
## License

View File

@@ -1,10 +1,10 @@
set( MIRALL_VERSION_MAJOR 1 )
set( MIRALL_VERSION_MINOR 7 )
set( MIRALL_VERSION_MINOR 8 )
set( MIRALL_VERSION_PATCH 0 )
set( MIRALL_SOVERSION 0 )
if ( NOT DEFINED MIRALL_VERSION_SUFFIX )
set( MIRALL_VERSION_SUFFIX "") #e.g. beta1, beta2, rc1
set( MIRALL_VERSION_SUFFIX "rc1") #e.g. beta1, beta2, rc1
endif( NOT DEFINED MIRALL_VERSION_SUFFIX )
if( NOT DEFINED MIRALL_VERSION_BUILD )

View File

@@ -1,3 +1,16 @@
# Check if varialbe MAC_INSTALLER_BACKGROUND_FILE is defined. That might come
# from the OEM.cmake for branded clients or from OWNCLOUD.cmake for the non
# branded client.
# Make sure that the MAC_INSTALLER_BACKGROUND_FILE contains the full path, ie.
# includes CMAKE_SOURCE_DIR or so.
if (DEFINED MAC_INSTALLER_BACKGROUND_FILE )
set(MAC_INSTALLER_DO_CUSTOM_BACKGROUND "1")
else()
set(MAC_INSTALLER_DO_CUSTOM_BACKGROUND "0")
endif()
configure_file(create_mac_pkg.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/create_mac.sh)
configure_file(macosx.pkgproj ${CMAKE_CURRENT_BINARY_DIR}/macosx.pkgproj)
configure_file(macosx.pkgproj ${CMAKE_CURRENT_BINARY_DIR}/macosx.pkgproj)
configure_file(pre_install.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/pre_install.sh)

75
admin/osx/gen_sym_files.py Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python
import logging, os, re, subprocess, sys
import os.path
import pdb, pprint
if len(sys.argv) < 4:
print("Usage:")
print("\tgen_sym_files.py <path to breakpad's dump_syms> <path to owncloud.app> <symbol output dir>")
print("")
print("Symbols will be created in './symbols'")
sys.exit(1)
dump_symsPath = sys.argv[1]
bundlePath = sys.argv[2]
outPath = sys.argv[3]
macOsDir = os.path.join(bundlePath, 'Contents', 'MacOS')
pluginsDir = os.path.join(bundlePath, 'Contents', 'PlugIns')
def resolvePath(input):
resolved = re.sub(r'@\w+', macOsDir, input)
return os.path.normpath(resolved)
def extractDeps(macho):
deps = [macho]
otool = subprocess.Popen(['otool', '-L', macho], stdout=subprocess.PIPE)
for l in otool.communicate()[0].splitlines():
m = re.search(r'@[^\s]+', l)
if m:
path = resolvePath(m.group(0))
if not os.path.exists(path):
logging.warning("Non-existant file found in dependencies, ignoring: [%s]", path)
continue
deps.append(path)
return deps
def findDeps():
deps = []
for f in os.listdir(macOsDir):
path = os.path.join(macOsDir, f)
if not os.path.islink(path):
deps += extractDeps(path)
for root, dirs, files in os.walk(pluginsDir):
for f in files:
path = os.path.join(root, f)
deps += extractDeps(path)
return sorted(set(deps))
def dumpSyms(deps):
for dep in deps:
print("Generating symbols for [%s]" % dep)
with open('temp.sym', 'w') as temp:
subprocess.check_call([dump_symsPath, dep], stdout=temp)
with open('temp.sym', 'r') as temp:
header = temp.readline()
fields = header.split()
key, name = fields[3:5]
destDir = '%s/%s/%s/' % (outPath, name, key)
destPath = destDir + name + '.sym'
if os.path.exists(destPath):
logging.warning("Symbols already exist: [%s]", destPath)
continue
if not os.path.exists(destDir):
os.makedirs(destDir)
os.rename('temp.sym', destPath)
def strip(deps):
for dep in deps:
print("Stripping symbols off [%s]" % dep)
subprocess.check_call(['strip', '-S', dep])
print('=== Generating symbols for [%s] in [%s]' % (bundlePath, outPath))
deps = findDeps()
dumpSyms(deps)
strip(deps)

View File

@@ -33,7 +33,6 @@ FRAMEWORK_SEARCH_PATH=[
LIBRARY_SEARCH_PATH=['/usr/local/lib', '.']
QT_PLUGINS = [
'accessible/libqtaccessiblewidgets.dylib',
'sqldrivers/libqsqlite.dylib',
'platforms/libqcocoa.dylib',
'imageformats/libqgif.dylib',

View File

@@ -471,13 +471,18 @@
</dict>
<key>PACKAGE_SCRIPTS</key>
<dict>
<key>POSTINSTALL_PATH</key>
<dict/>
<key>PREINSTALL_PATH</key>
<dict/>
<key>RESOURCES</key>
<array/>
</dict>
<key>POSTINSTALL_PATH</key>
<dict/>
<key>PREINSTALL_PATH</key>
<dict>
<key>PATH</key>
<string>@CMAKE_CURRENT_BINARY_DIR@/pre_install.sh</string>
<key>PATH_TYPE</key>
<integer>0</integer>
</dict>
<key>RESOURCES</key>
<array/>
</dict>
<key>PACKAGE_SETTINGS</key>
<dict>
<key>AUTHENTICATION</key>
@@ -485,9 +490,9 @@
<key>CONCLUSION_ACTION</key>
<integer>0</integer>
<key>IDENTIFIER</key>
<string>com.ownCloud.client</string>
<string>@APPLICATION_REV_DOMAIN_INSTALLER@</string>
<key>NAME</key>
<string>ownCloud Client</string>
<string>@APPLICATION_NAME@</string>
<key>OVERWRITE_PERMISSIONS</key>
<false/>
<key>VERSION</key>
@@ -1055,12 +1060,12 @@
<key>BACKGROUND_PATH</key>
<dict>
<key>PATH</key>
<string>@CMAKE_SOURCE_DIR@/admin/osx/installer-background.png</string>
<string>@MAC_INSTALLER_BACKGROUND_FILE@</string>
<key>PATH_TYPE</key>
<integer>0</integer>
</dict>
<key>CUSTOM</key>
<integer>1</integer>
<integer>@MAC_INSTALLER_DO_CUSTOM_BACKGROUND@</integer>
<key>SCALING</key>
<integer>0</integer>
</dict>
@@ -1213,7 +1218,7 @@
<key>LANGUAGE</key>
<string>English</string>
<key>VALUE</key>
<string>ownCloud Client</string>
<string>@APPLICATION_NAME@ Client</string>
</dict>
</array>
</dict>
@@ -1413,7 +1418,7 @@
</dict>
</array>
<key>NAME</key>
<string>ownCloud Installer</string>
<string>@APPLICATION_NAME@ Installer</string>
<key>REFERENCE_FOLDER_PATH</key>
<string>@CMAKE_INSTALL_DIR@</string>
</dict>

View File

@@ -0,0 +1,8 @@
#!/bin/sh
# kill the old version. see issue #2044
killall @APPLICATION_EXECUTABLE@
# Unload the Finder plugin. see issue #2105
killall Finder

View File

@@ -5,26 +5,6 @@
src_app="$1"
identity="$2"
QT_FMWK_VERSION="5"
fix_frameworks() {
TMP_APP=$1
QT_FMWK_PATH=$2
QT_FMWKS=$3/Qt*.framework
echo "Patching Qt frameworks..."
for FMWK in $QT_FMWKS; do
FMWK_NAME=`basename -s .framework $FMWK`
FMWK=`basename $FMWK`
FMWK_PATH="${TMP_APP}/Contents/Frameworks/${FMWK}"
mkdir -p "${FMWK_PATH}/Versions/${QT_FMWK_VERSION}/Resources/"
cp -avf "${QT_FMWK_PATH}/${FMWK}/Contents/Info.plist" "${FMWK_PATH}/Versions/${QT_FMWK_VERSION}/Resources"
(cd "${FMWK_PATH}" && ln -sf "Versions/${QT_FMWK_VERSION}/Resources" "Resources")
perl -pi -e "s/${FMWK_NAME}_debug/${FMWK_NAME}/" "${FMWK_PATH}/Resources/Info.plist"
done
}
fix_frameworks "$src_app" `qmake -query QT_INSTALL_LIBS` "$src_app"/Contents/Frameworks
codesign -s "$identity" --force --verbose=4 --deep "$src_app"
# Just for our debug purposes:

View File

@@ -22,8 +22,8 @@ SET(QMAKESPEC win32-g++-cross)
# dirs
SET(QT_LIBRARY_DIR /usr/${MINGW_PREFIX}/bin)
SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt4/plugins)
SET(QT_MKSPECS_DIR ${CMAKE_FIND_ROOT_PATH}/share/qt4/mkspecs)
SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt5/plugins)
SET(QT_MKSPECS_DIR ${CMAKE_FIND_ROOT_PATH}/share/qt5/mkspecs)
SET(QT_QT_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/include)
# qt tools

View File

@@ -2,9 +2,9 @@
## Introduction
Translations on transifex: http://www.transifex.com/projects/p/owncloud/resource/mirall-wininstaller/
Translations on transifex: http://www.transifex.com/projects/p/owncloud/resource/client-nsis/
Daily sync job: https://ci.owncloud.org/view/translation-sync/job/translation-sync-mirall-wininstaller/
Daily sync job: https://ci.owncloud.org/view/translation-sync/job/translation-sync-client-nsis/
## How to add a new translation string?

View File

@@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[owncloud.mirall-wininstaller]
[owncloud.client-nsis]
host = https://www.transifex.com
source_file = pofiles/messages.pot
source_lang = en

View File

@@ -1,46 +1,46 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Erakutsi bertsio-berritze oharrak"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Gelditu beharreko ${APPLICATION_EXECUTABLE} prozesua(k) aurkitu dira.$\nNahi duzu instalatzaileak zure partetik hauek gelditzea?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "${APPLICATION_EXECUTABLE} prozesuak hiltzen."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "kill prozesua ez da aurkitu!"
StrCpy $PageReinstall_NEW_Field_1 "${APPLICATION_NAME}ren bertsio zaharrago bat instalatuta dago. Aholkatzen da hau desinstalatzea berria instalatu baino lehen. Hautatu nahi duzun aukera eta sakatu Hurrengoa jarraitzeko."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalatu instalatu baino lehen"
StrCpy $PageReinstall_NEW_Field_3 "Ez desinstalatu"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Dagoeneko Instalatuta"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Hautatu nola nahi duzun ${APPLICATION_NAME} instalatzea."
StrCpy $PageReinstall_OLD_Field_1 "${APPLICATION_NAME}ren bertsio berriago bat instalatuta dago! Ez da aholkatzen bertsio zaharrago bat instalatzea. Benetan bertsio zaharrago hau instalatu nahi baduzu, hobe da lehenengo bertsio berria desinstalatzea. Hautatu nahi duzun aukera eta sakatu Hurrengoa jarraitzeko."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} dagoeneko instalatuta dago.\nHautatu zer operazio egin nahi duzu eta klikatu Hurrengoa jarraitzeko."
StrCpy $PageReinstall_SAME_Field_2 "Gehitu/Berrinstalatu osagaiak"
StrCpy $PageReinstall_SAME_Field_3 "Desinstalatu ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstalatu ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Hautatu zer mantenu aukera egin nahi duzun."
StrCpy $SEC_APPLICATION_DETAILS "${APPLICATION_NAME} ezinbestekoak instalatzen."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Windows Explorerekin Integrazioa"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Windows Explorerekin Integrazioa Instalatzen"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Hasierako Menuko Lasterbidea"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Hasierako Menuan ${APPLICATION_NAME}rako Abiarazle bizkorra sortzen."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Mahaigaineko Lasterbidea"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Mahaigaineko Lasterbideak Sortzen"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Abiarazle Bizkorreko Lasterbidea"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Abiarazle Bizkorreko Lasterbidea Sortzen"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} ezinbestekoak."
StrCpy $OPTION_SECTION_SC_START_MENU_Desc "${APPLICATION_NAME} lasterbidea."
StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "${APPLICATION_NAME}rako mahaigaineko lasterbidea."
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_Desc "${APPLICATION_NAME}erako Abiarazle Bizkorreko Lasterbidea."
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Ezabatu ${APPLICATION_NAME}en datuen karpeta zure ordenagailutik."
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "${APPLICATION_NAME}en datuen karpeta ezabatu nahi duzu?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Utzi markatu gabe datuen karpeta uzteko edo markatu datuen karpeta ezabatzeko."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Bai, ezabtu datu karpeta hau."
StrCpy $UNINSTALLER_FILE_Detail "Desinstalatzailea idazten"
StrCpy $UNINSTALLER_REGISTRY_Detail "Instalatzaileko Erregistroko Giltzak idazten"
StrCpy $UNINSTALLER_FINISHED_Detail "Bukatuta"
StrCpy $UNINSTALL_MESSAGEBOX "Ez dirudi ${APPLICATION_NAME} '$INSTDIR'.$ direktorioan instalatuta dagoenik.\n$\nJarraitu hala ere (ez da aholkatzen)?"
StrCpy $UNINSTALL_ABORT "Desinstalazioak erabiltzaileak bertan behera utzi du"
StrCpy $INIT_NO_QUICK_LAUNCH "Abiarazle Bizkorreko Lasterbidea (E/E)"
StrCpy $INIT_NO_DESKTOP "Mahaigaineko Lasterbidea (dagoena berridazten du)"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Instalatzaileak administratzaile baimenak behar ditu, saiatu berriro"
StrCpy $INIT_INSTALLER_RUNNING "Instalatzailea dagoeneko martxan da."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Desinstalatzaile honek administratzaile baimenak behar ditu, saiatu berriro"
StrCpy $INIT_UNINSTALLER_RUNNING "Desinstalatzailea dagoeneko martxan da."
StrCpy $SectionGroup_Shortcuts "Lasterbideak"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Killing ${APPLICATION_EXECUTABLE} processes."
StrCpy $PageReinstall_NEW_Field_1 "An older version of ${APPLICATION_NAME} is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
StrCpy $PageReinstall_OLD_Field_1 "A newer version of ${APPLICATION_NAME} is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
StrCpy $SEC_APPLICATION_DETAILS "Installing ${APPLICATION_NAME} essentials."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} essentials."
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Leave unchecked to keep the data folder for later use or check to delete the data folder."
StrCpy $UNINSTALL_MESSAGEBOX "It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy $INIT_NO_DESKTOP "Desktop Shortcut (overwrites existing)"
StrCpy $UAC_ERROR_ELEVATE "Unable to elevate, error:"

View File

@@ -42,5 +42,5 @@ StrCpy $INIT_INSTALLER_RUNNING "L'instal·lador ja s'està executant."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Aquest desinstal·lador requereix accés d'administrador, intenteu-ho de nou."
StrCpy $INIT_UNINSTALLER_RUNNING "El desinstal·lador ja s'està executant."
StrCpy $SectionGroup_Shortcuts "Dreceres"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Odinstalovat ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Odinstalovat ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Vyberte možnost údržby k provedení."
StrCpy $SEC_APPLICATION_DETAILS "Instalují se náležitosti ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Stavová ikona pro Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instaluji stavovou ikonu pro Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integrace do průzkumníka Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalace integrace do průzkumníka Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Zástupce v Nabídce Start"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Přidávám zástupce pro ${APPLICATION_NAME} do Nabídky Start."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Zástupce na ploše"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "De-installeer ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "De-installeer ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Kies de uit te voeren onderhoudsoptie."
StrCpy $SEC_APPLICATION_DETAILS "Installeren ${APPLICATION_NAME} basis."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Statuspictogrammen voor Windows Verkenner"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installeren statuspictogrammen voor Windows Verkenner"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integratie binnen Windows Verkenner"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installeren Integratie binnen Windows Verkenner"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Startmenu snelkoppeling"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Toevoegen snelkoppeling voor ${APPLICATION_NAME} aan het Startmenu."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Werkblad snelkoppeling"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Uninstall ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Uninstall ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Choose the maintenance option to perform."
StrCpy $SEC_APPLICATION_DETAILS "Installing ${APPLICATION_NAME} essentials."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Start Menu Program Shortcut"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Adding shortcut for ${APPLICATION_NAME} to the Start Menu."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Desktop Shortcut"

View File

@@ -42,5 +42,5 @@ StrCpy $INIT_INSTALLER_RUNNING "Paigaldaja on juba k
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "See desinstallija vajab admini ligipääsu, proovi uuesti"
StrCpy $INIT_UNINSTALLER_RUNNING "See desinstallija on juba käimas"
StrCpy $SectionGroup_Shortcuts "Viidad"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"

View File

@@ -24,8 +24,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Uninstall ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Uninstall ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Choose the maintenance option to perform."
StrCpy $SEC_APPLICATION_DETAILS "Installing ${APPLICATION_NAME} essentials."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Start Menu Program Shortcut"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Adding shortcut for ${APPLICATION_NAME} to the Start Menu."
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Creating Quick Launch Shortcut"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Poista ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Poista ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Valitse suoritettava huoltotoimenpide."
StrCpy $SEC_APPLICATION_DETAILS "Asennetaan sovelluksen ${APPLICATION_NAME} välttämättömyyksiä."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Tilakuvakkeet Windows Explorerille"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Asennetaan tilakuvakkeet Windows Explorerille"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integraatio Windows Exploreriin"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Asennetaan integraatiota Windows Exploreriin"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Käynnistä-valikon pikakuvake"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Lisätään ${APPLICATION_NAME}-pikakuvake Käynnistä-valikkoon."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Työpöydän pikakuvake"
@@ -31,16 +31,16 @@ StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Poista ${APPLICATION_NAME}-datakansio tiet
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "Haluatko varmasti poistaa ${APPLICATION_NAME}-datakansion?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Jätä valinta ruksimatta säilyttääksesti datakansion myöhempää käyttöä varten tai täytä ruksi jos haluat poistaa datakansion ja siinä olevat tiedostot."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Kyllä, poista tämä datakansio."
StrCpy $UNINSTALLER_FILE_Detail "Kirjoitetaan poisto-ohjelmaa"
StrCpy $UNINSTALLER_REGISTRY_Detail "Kirjoitetaan asennusohjelman rekisteriavaimia"
StrCpy $UNINSTALLER_FINISHED_Detail "Valmis"
StrCpy $UNINSTALL_MESSAGEBOX "Vaikuttaa siltä että sovellus ${APPLICATION_NAME} on asennettu kansioon '$INSTDIR'.\n\nHaluatko jatkaa tästä huolimatta (ei suositeltavaa)?"
StrCpy $UNINSTALL_ABORT "Poistaminen keskeytettiin käyttäjän toimesta"
StrCpy $INIT_NO_QUICK_LAUNCH "Pikakäynnistyksen pikakuvake (-)"
StrCpy $INIT_NO_DESKTOP "Työpöydän pikakuvake (korvaa nykyinen)"
StrCpy $UAC_ERROR_ELEVATE "Kohottaminen ei onnistu, virhe:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Tämä asennusohjelma vaatii ylläpitäjän oikeudet, yritä uudelleen."
StrCpy $INIT_INSTALLER_RUNNING "Asennusohjelma on jo käynnissä."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Tämä poisto-ohjelma vaatii ylläpitäjän oikeudet, yritä uudelleen."
StrCpy $INIT_UNINSTALLER_RUNNING "Poisto-ohjelma on jo käynnissä."
StrCpy $SectionGroup_Shortcuts "Pikakuvakkeet"
StrCpy $UNINSTALLER_FILE_Detail "Writing Uninstaller"
StrCpy $INIT_NO_QUICK_LAUNCH "Quick Launch Shortcut (N/A)"
StrCpy $UAC_ERROR_ELEVATE "Unable to elevate, error:"

View File

@@ -1,26 +1,28 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Montrer les notes de version"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Le(s) processus en cours dexécution ${APPLICATION_EXECUTABLE} doit être stoppé afin de poursuivre.$\nVoulez-vous que le programme dinstallation sen charge pour vous ?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Fermeture du processus ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Les processus à stopper n'ont pas été trouvés."
StrCpy $PageReinstall_NEW_Field_1 "Une vieille version de ${APPLICATION_NAME} est installée sur votre système. Il est recommandé que vous désinstalliez cette version avant l'installation. Sélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Afficher les notes de version"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Le(s) processus en cours dexécution ${APPLICATION_EXECUTABLE} doit (doivent) être stoppé(s) afin de poursuivre.$\nVoulez-vous que le programme dinstallation sen charge pour vous ?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Fermeture des processus ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Le processus à stopper n'a pas été trouvé !"
StrCpy $PageReinstall_NEW_Field_1 "Une ancienne version de ${APPLICATION_NAME} est installée sur votre système. Il est recommandé de désinstaller cette version avant de continuer. Sélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy $PageReinstall_NEW_Field_2 "Désinstaller avant d'installer à nouveau"
StrCpy $PageReinstall_NEW_Field_3 "Ne pas désinstaller"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Déjà installée"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Choisissez comment vous voulez installer ${APPLICATION_NAME}."
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Déjà installé"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Choisissez comment installer ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Une version plus récente de ${APPLICATION_NAME} est déjà installée ! Il n'est pas recommandé d'installer une version plus ancienne. Si vous voulez vraiment installer cette version plus ancienne, il est préférable de d'abord désinstaller la version courante. Sélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} est déjà installée.\nSélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} est déjà installé.\nSélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy $PageReinstall_SAME_Field_2 "Ajouter/Réinstaller des composants"
StrCpy $PageReinstall_SAME_Field_3 "Désinstaller ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Désinstaller ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Choisir l'option de maintenance à appliquer."
StrCpy $SEC_APPLICATION_DETAILS "Installer les essentiels de ${APPLICATION_NAME}."
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Choisir l'opération de maintenance à effectuer."
StrCpy $SEC_APPLICATION_DETAILS "Installation des essentiels de ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Intégration à l'Explorateur Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installation de l'intégration à l'Explorateur Windows..."
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Raccourci programme du menu Démarrer"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Ajouter un raccourci pour ${APPLICATION_NAME} au menu Démarrer."
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Ajout d'un raccourci pour ${APPLICATION_NAME} au menu Démarrer."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Raccourci Bureau"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Créer un raccourci Bureau"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Création d'un raccourci sur le Bureau"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Raccourci de lancement rapide"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Créer un raccourci de lancement rapide"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Création d'un raccourci de lancement rapide"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "Essentiels de ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_START_MENU_Desc "Raccourci de ${APPLICATION_NAME}"
StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "Raccourci Bureau de ${APPLICATION_NAME}."
@@ -32,15 +34,13 @@ StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Oui, supprimer ce dossier de données."
StrCpy $UNINSTALLER_FILE_Detail "Écriture du désinstallateur"
StrCpy $UNINSTALLER_REGISTRY_Detail "Écriture des clefs de registre du désinstallateur"
StrCpy $UNINSTALLER_FINISHED_Detail "Terminé"
StrCpy $UNINSTALL_MESSAGEBOX "Il semble que ${APPLICATION_NAME} ne soit pas installée dans le dossier '$INSTDIR'.$\n$\nVoulez-vous poursuivre (non recommandé) ?"
StrCpy $UNINSTALL_MESSAGEBOX "Il semble que ${APPLICATION_NAME} ne soit pas installé dans le dossier '$INSTDIR'.$\n$\nVoulez-vous poursuivre (non recommandé) ?"
StrCpy $UNINSTALL_ABORT "Désinstallation interrompue par l'utilisateur"
StrCpy $INIT_NO_QUICK_LAUNCH "Raccourci de lancement rapide (N/A)"
StrCpy $INIT_NO_QUICK_LAUNCH "Raccourci de lancement rapide (non disponible)"
StrCpy $INIT_NO_DESKTOP "Raccourci bureau (remplace lexistant)"
StrCpy $UAC_ERROR_ELEVATE "Echec d'élévation, erreur :"
StrCpy $UAC_ERROR_ELEVATE "Échec d'élévation, erreur :"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Cet installateur requiert les droits administrateur, essayez à nouveau"
StrCpy $INIT_INSTALLER_RUNNING "Une installation est déjà en cours."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Ce désinstallateur requiert les droits administrateur, essayez à nouveau"
StrCpy $INIT_UNINSTALLER_RUNNING "Une désinstallation est déjà en cours."
StrCpy $SectionGroup_Shortcuts "Raccourcis"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"

View File

@@ -3,7 +3,7 @@ StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Amosar as notas de publicaci
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Atopáronse procesos ${APPLICATION_EXECUTABLE} que teñen que ser detidos.$\nQuere que sexa o instalador quen o(s) deteña?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Matando os procesos ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Non se atopou o proceso para matalo!"
StrCpy $PageReinstall_NEW_Field_1 "No seu sistema hai instalada unha versión anterior do ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy $PageReinstall_NEW_Field_1 "No seu sistema hai instalada unha versión anterior de ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "Non desinstalar"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Xa instalado"
@@ -15,10 +15,10 @@ StrCpy $PageReinstall_SAME_Field_3 "Desinstalar ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstalar ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Escolla a opción de mantemento a realizar."
StrCpy $SEC_APPLICATION_DETAILS "Instalando ${APPLICATION_NAME} esenciais."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Iconas de estado para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando as iconas de estado para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integración con Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando a integración con Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Acceso directo ao programa no menú de inicio"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Engadindo o acceso directo ao ${APPLICATION_NAME} no menú de inicio"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Engadindo o acceso directo a ${APPLICATION_NAME} no menú de inicio"
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Acceso directo no escritorio"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Creando os accesos directos no escritorio"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Acceso de inicio rápido"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "${APPLICATION_NAME} entfernen"
StrCpy $UNINSTALLER_APPDATA_TITLE "${APPLICATION_NAME} entfernen"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Wählen Sie zur Ausführung die Wartungsoption."
StrCpy $SEC_APPLICATION_DETAILS "Installiere ${APPLICATION_NAME} Basis."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status-Icons für den Windows-Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installiere Status-Icons für den Windows-Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration in den Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installiere Integration in den Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Installiere Verknüpfung im Programmmenü"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Füge Verknüpfung für ${APPLICATION_NAME} dem Startmenü hinzu."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Desktop-Verknüpfung"
@@ -38,7 +38,7 @@ StrCpy $UNINSTALL_MESSAGEBOX "Es scheint, als ob ${APPLICATION_NAME} nicht im Ve
StrCpy $UNINSTALL_ABORT "Deinstallation vom Benutzer abgebrochen"
StrCpy $INIT_NO_QUICK_LAUNCH "Schnellstart-Verknüpfung (Nicht verfügbar)"
StrCpy $INIT_NO_DESKTOP "Desktop-Verknüpfung (überschreibt vorhandene)"
StrCpy $UAC_ERROR_ELEVATE "Kann Rechte nicht erhöhen, Fehler:"
StrCpy $UAC_ERROR_ELEVATE "Rechte können nicht erhöht werden, Fehler:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Dieses Installationsprogramm erfordert Administrator-Rechte, bitte erneut versuchen"
StrCpy $INIT_INSTALLER_RUNNING "Das Installationsprogramm wird bereits ausgeführt."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Das Deinstallationsprogramm erfordert Administrator-Rechte. Bitte erneut versuchen."

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "
StrCpy $UNINSTALLER_APPDATA_TITLE "Απεγκατάσταση ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Επιλέξτε την επιλογή συντήρησης που θα πραγματοποιηθεί."
StrCpy $SEC_APPLICATION_DETAILS "Εγκατάσταση βάσης ${APPLICATION_NAME} σε εξέλιξη."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Εικονίδια κατάστασης για την Εξερεύνηση των Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Εγκατάσταση εικονιδίων κατάστασης στην Εξερεύνηση των Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Ενσωμάτωση στην Εξερεύνηση των Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Εγκατάσταση ενσωμάτωσης στην Εξερεύνηση των Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Συντόμευση στο Αρχικό Μενού"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Προσθήκη συντόμευσης για την ${APPLICATION_NAME} στο Αρχικό Μενού."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Συντόμευση επιφάνειας εργασίας"

View File

@@ -24,8 +24,8 @@ StrCpy $PageReinstall_OLD_Field_1 "A newer version of ${APPLICATION_NAME} is alr
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Choose the maintenance option to perform."
StrCpy $SEC_APPLICATION_DETAILS "Installing ${APPLICATION_NAME} essentials."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Start Menu Program Shortcut"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Adding shortcut for ${APPLICATION_NAME} to the Start Menu."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Desktop Shortcut"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Disinstalla ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Disinstalla ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Scegli l'opzione di manutenzione da eseguire."
StrCpy $SEC_APPLICATION_DETAILS "Installazione degli elementi fondamentali di ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Icone di stato per Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installazione delle icone di stato per Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integrazione con Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installazione dell'integrazione con Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Scorciatoia di programma menu Start"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Aggiunta della scorciatoia per ${APPLICATION_NAME} al menu Start."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Scorciatoia del desktop"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "${APPLICATION_NAME}
StrCpy $UNINSTALLER_APPDATA_TITLE "${APPLICATION_NAME} をアンインストール"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "実行するには、メンテナンスオプションを選択してください。"
StrCpy $SEC_APPLICATION_DETAILS "${APPLICATION_NAME} の重要なパッケージをインストール中"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Windowsエクスプローラの状態アイコン"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Windowsエクスプローラの状態アイコンをインストール"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Windows エクスプローラーへの統合"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Windows エクスプローラーへの統合をインストールしています。"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "スタートメニューショートカット"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "スタートメニューに${APPLICATION_NAME} のショートカットの追加"
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "デスクトップショートカット"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Odinstaluj ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Odinstaluj ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Wybierz sposób utrzymywania."
StrCpy $SEC_APPLICATION_DETAILS "Instaluje niezbędne pliki ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Ikona statusu dla Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instaluj ikonę statusu dla Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "integracja z Eksploratorem Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalowanie Integracji z Eksploratorem Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Skrót w Menu Start"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Dodaję skrót ${APPLICATION_NAME} w Menu Start."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Skrót na Pulpicie"

View File

@@ -1,22 +1,22 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar notas de lançamento"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Encontrados processos ${APPLICATION_EXECUTABLE} que precisam de ser parados.$\nDeseja que o instalador os pare ?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "A terminar processos ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Processo para terminar não foi encontrado!"
StrCpy $PageReinstall_NEW_Field_1 "Está instalada uma versão anterior de ${APPLICATION_NAME} no seu sistema. Recomenda-se que desinstale primeiro a versão atual antes de instalar. Selecione a operação que pretende fazer, e clique Seguinte para continuar."
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Processos(s) ${APPLICATION_EXECUTABLE} em execução. Estes processos precisam de ser interrompidos.$\\nDeseja que o instalador os termine automaticamente?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "A terminar os processos ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Não foi encontrado o processo a terminar!"
StrCpy $PageReinstall_NEW_Field_1 "Uma versão antiga de ${APPLICATION_NAME} está instalada no sistema. É recomendado que você desinstale a versão atual antes de instalar. Selecione a operação que deseja executar e clique em $\"Avançar$\" para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstale"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Já instalado"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Escolha como pretende instalar ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Já esta instalada uma nova versão dfe ${APPLICATION_NAME}! Não se recomenda instalar uma versão anterior. Se quer mesmo instalar esta versão mais antiga, é melhor desinstalar primeiro a versão atual. Selecione a operação que pretende fazer e clique Seguinte para continuar."
StrCpy $PageReinstall_OLD_Field_1 "Uma versão mais recente do ${APPLICATION_NAME} já está instalada! Não é recomendada a instalação de uma versão mais antiga. Se realmente deseja instalar esta versão, aconselha-se a desinstalação da versão atual primeiro. Selecione a operação que deseja executar e clique em Avançar para continuar."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} já está instalado.\nSelecione a operação que deseja fazer, e clique Seguinte para continuar."
StrCpy $PageReinstall_SAME_Field_2 "Adicionar/Reinstalar Componentes"
StrCpy $PageReinstall_SAME_Field_3 "Desinstalar ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstalar ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Escolha a opção de manutenção a fazer."
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Escolha a opção de manutenção a realizar."
StrCpy $SEC_APPLICATION_DETAILS "A instalar o essencial de ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Icons de estado para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "A instalar icons de estado para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integração para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "A instalar integração para Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Atalho do progama no Menu Inicial"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "A adicionar o atalho de ${APPLICATION_NAME} ao Menu Inicial."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Atalho da área de trabalho"
@@ -40,7 +40,7 @@ StrCpy $INIT_NO_QUICK_LAUNCH "Atalho de Início Rápido (N/A)"
StrCpy $INIT_NO_DESKTOP "Atalho do Ambiente de Trabalho (sobrepõe o existente)"
StrCpy $UAC_ERROR_ELEVATE "Incapaz de elevar, erro:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Este instalador precisa de permissões de administrador, tente novamente"
StrCpy $INIT_INSTALLER_RUNNING "O instalador já está a correr."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador precisa de acesso de administrador; tente novamente"
StrCpy $INIT_UNINSTALLER_RUNNING "O desinstalador já está a correr."
StrCpy $INIT_INSTALLER_RUNNING "O instalador já está em execução."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador requer permissões de administrador, tente novamente"
StrCpy $INIT_UNINSTALLER_RUNNING "O desinstalador já está em execução."
StrCpy $SectionGroup_Shortcuts "Atalhos"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Desinstalar ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstalar ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Escolha a opção de realizar manutenção."
StrCpy $SEC_APPLICATION_DETAILS "Instalando ${APPLICATION_NAME} fundamentos."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Ícones de status para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando os ícones de status para o Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integração para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalação de Integração para Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Menu Iniciar Programa Atalho"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Adicionando atalho para ${APPLICATION_NAME} ao Menu Iniciar."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Atalho Desktop"

View File

@@ -1,46 +1,46 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Показать примечания к выпуску"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Обнаружены процес(сы) ${APPLICATION_EXECUTABLE}, которые должны быть остановлены.$\nХотите программа установки сделает это самостоятельно?"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Обнаружен процесс ${APPLICATION_EXECUTABLE}, который требуется остановить.$\nВы хотите чтобы программа установки сделала это самостоятельно?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Завершение процессов ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Не найдены процессы, которые нужно завершить!"
StrCpy $PageReinstall_NEW_Field_1 "Обнаружена более старая версия ${APPLICATION_NAME}. Рекомендуется удалить её перед установкой. Выберите желаемое действие и нажмите $\"Далее$\"."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Процессы для завершения не найдены!"
StrCpy $PageReinstall_NEW_Field_1 "Обнаружена более старая версия ${APPLICATION_NAME}. Рекомендуется удалить её перед установкой. Выберите желаемое действие и нажмите Далее для продолжения."
StrCpy $PageReinstall_NEW_Field_2 "Удалить перед установкой"
StrCpy $PageReinstall_NEW_Field_3 "Не устанавливать"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Уже установлено"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Выберите, как вы хотите установить ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Новая версия ${APPLICATION_NAME} уже установлена​​! Не рекомендуется устанавливать старую версию. Если вы действительно хотите, чтобы устанавливать старую версию, лучше удалить текущую версию. Выберите операцию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} уже установлена.\nВыберите операцию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Выберите, как вы хотите установить ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Новая версия ${APPLICATION_NAME} уже установлена​​! Не рекомендуется устанавливать старую версию. Если вы действительно хотите установить эту старую версию, то сначала лучше удалить текущую версию. Выберите желаемое действие и нажмите Далее для продолжения."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} уже установлена.\nВыберите желаемое действие и нажмите Далее для продолжения."
StrCpy $PageReinstall_SAME_Field_2 "Добавить/Переустановить компоненты"
StrCpy $PageReinstall_SAME_Field_3 "Удалить ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Удалить ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Выберите опцию обслуживания для исполнения."
StrCpy $SEC_APPLICATION_DETAILS "Установка зависимостей приложения ${APPLICATION_NAME}"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Значки статуса для проводника Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Установка значков статуса для проводника Windows"
StrCpy $SEC_APPLICATION_DETAILS "Установка базовых компонентов ${APPLICATION_NAME}"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Интеграция для проводника Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Установка интеграции с проводником Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Ярлык в меню Пуск"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Добавление ярлыка ${APPLICATION_NAME} в меню Пуск"
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Ярлык на рабочем столе"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Создание ярлыков на рабочем столе"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Ярлык в меню быстрого запуска"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Создание ярлыка в меню быстрого запуска"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "Зависимости приложения ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "Базовые компоненты ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_START_MENU_Desc "Ярлык приложения ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "Ярлык на рабочем столе для ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_Desc "Ярлык в меню быстрого запуска для ${APPLICATION_NAME}."
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Удалить папку данных ${APPLICATION_NAME} с вашего компьютера."
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "Вы хотите удалить папку с данными ${APPLICATION_NAME} ?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Оставьте неактивным, для сохранения папки с данными приложения, для последующего их использования."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Да, удалить эту папку с данными."
StrCpy $UNINSTALLER_FILE_Detail "Сохранение деинсталятора"
StrCpy $UNINSTALLER_REGISTRY_Detail "Запись ключей реестра"
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Удалить каталог данных ${APPLICATION_NAME} с вашего компьютера."
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "Вы действительно хотите удалить каталог с данными ${APPLICATION_NAME} ?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Оставьте неактивным для сохранения каталога с данными для последующего использования или отметьте для удаления."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Да, удалить этот каталог с данными."
StrCpy $UNINSTALLER_FILE_Detail "Сохранение деинсталлятора"
StrCpy $UNINSTALLER_REGISTRY_Detail "Запись ключей реестра установщика"
StrCpy $UNINSTALLER_FINISHED_Detail "Завершено"
StrCpy $UNINSTALL_MESSAGEBOX "Скорее всего, приложение ${APPLICATION_NAME} уже установлено в директорию '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy $UNINSTALL_MESSAGEBOX "Похоже, что приложение ${APPLICATION_NAME} не установлено в каталог '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy $UNINSTALL_ABORT "Удаление отменено пользователем"
StrCpy $INIT_NO_QUICK_LAUNCH "Ярлык быстрого запуска (недоступен)"
StrCpy $INIT_NO_DESKTOP "Ярлык на рабочем столе (перезаписать существующий)"
StrCpy $UAC_ERROR_ELEVATE "Невозможно поднять, ошибка:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Для установки необходимы права администратора, попробуйте ещё раз."
StrCpy $INIT_NO_QUICK_LAUNCH "Ярлык быстрого запуска (не доступен)"
StrCpy $INIT_NO_DESKTOP "Ярлык на рабочем столе (перезапись существующего)"
StrCpy $UAC_ERROR_ELEVATE "Невозможно повысить привилегии, ошибка:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Этому установщику требуются права администратора, попробуйте ещё раз"
StrCpy $INIT_INSTALLER_RUNNING "Установщик уже запущен."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Этот деинсталятор требует права администратора, попытайтесь ещё"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Этому деинсталлятору требуются права администратора, попробуйте ещё раз"
StrCpy $INIT_UNINSTALLER_RUNNING "Программа удаления уже выполняется."
StrCpy $SectionGroup_Shortcuts "Ярлыки"

View File

@@ -15,6 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "卸载${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "卸载${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "选择需要执行的维护选项。"
StrCpy $SEC_APPLICATION_DETAILS "安装${APPLICATION_NAME}基本组件。"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "整合到 Windows 资源管理器"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "正在整合到 Windows 资源管理器"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "开始菜单程序快捷方式"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "添加 ${APPLICATION_NAME} 快捷方式到开始菜单。"
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "桌面快捷方式"
@@ -42,5 +44,3 @@ StrCpy $INIT_INSTALLER_RUNNING "安装程序已经运行。"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "卸载程序需要管理员权限,请重试"
StrCpy $INIT_UNINSTALLER_RUNNING "卸载程序已经运行。"
StrCpy $SectionGroup_Shortcuts "快捷方式"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Odin
StrCpy $UNINSTALLER_APPDATA_TITLE "Odinštalova<EFBFBD> ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Vyberte možnos<6F> vykona<6E> údržbu."
StrCpy $SEC_APPLICATION_DETAILS "Inštalujú sa náležitosti ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Stavová ikona pre Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Inštalujem stavovú ikonu pre Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integrácia do Windows Explorera"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Inštalaácia integrácie do Windows Explorera"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Zástupca programu v menu Štart"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Prida<EFBFBD> zástupcu pre ${APPLICATION_NAME} do menu Štart."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Zástupca na ploche"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Odstrani ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Odstrani ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Izberite možnost vzdrževanja za izvedbo."
StrCpy $SEC_APPLICATION_DETAILS "Poteka nameščanje ključnih paketov programa ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Ikona stanja za program Raziskovalec"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Nameščanje ikone stanja za Raziskovalca"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Podpora programa Windows raziskovalca"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Nameščanje podpore za program Windows Raziskovalec"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Bližnjica programa v programskem meniju"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Poteka dodajanje bližnjice programa ${APPLICATION_NAME} v programski meni."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Bližnica namizja"

View File

@@ -2,12 +2,12 @@
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar las notas de la versión"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "El/los proceso/s ${APPLICATION_EXECUTABLE} debe/n ser detenidos.$\n¿Quiere que el instalador lo haga por usted?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Deteniendo el/los proceso/s ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "¡Proceso a detener no encontrado!"
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "¡Proceso para detener no encontrado!"
StrCpy $PageReinstall_NEW_Field_1 "Una versión anterior de ${APPLICATION_NAME} se encuentra instalada en el sistema. Se recomienda de instalar la versión actual antes de instalar la nueva. Seleccione la operacion deseada y haga click en Siguiente para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "No desinstalar"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Ya está instalado"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Elija como quiere instalar ${APPLICATION_NAME}."
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Elija cómo quiere instalar ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Una nueva versión de ${APPLICATION_NAME} ya está instalada. No es recomendable instalar una versión anterior. Si realmente quiere instalar esta versión anterior, es mejor que desinstale la versión actual primero. Seleccione la operación que desea realizar y pulse Next para continuar."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} ya está instalada.\nSeleccione la operación que desea realizar y pulse Next para continuar."
StrCpy $PageReinstall_SAME_Field_2 "Añadir/Reinstalar componentes"
@@ -15,32 +15,32 @@ StrCpy $PageReinstall_SAME_Field_3 "Desinstalar ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstalar ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Elija la opcion de mantenimiento a realizar."
StrCpy $SEC_APPLICATION_DETAILS "Instalando ${APPLICATION_NAME} esenciales."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Íconos de estado para el Explorador de Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando íconos de estado para el Explorador de Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Acceso Directo al Programa Menú de Inicio"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integración para Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando la integración para Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Acceso directo al programa Menú de Inicio"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Añadiendo accesos directos para ${APPLICATION_NAME} en el Menú de Inicio."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Acceso directo de Escritorio"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Creando Accesos Directos de Escritorio"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Acceso Directo al Lanzador Rápido"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Creando accesos directos de escritorio"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Atajo de accceso rápido"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Creando un Acceso Directo al Lanzador Rápido"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} esencial."
StrCpy $OPTION_SECTION_SC_START_MENU_Desc "Acceso Directo de ${APPLICATION_NAME}"
StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "Acceso Directo de Escritorio para ${APPLICATION_NAME}"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_Desc "Lanzador Rápido de Accesos Director para ${APPLICATION_NAME}."
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Remueva la carpeta de datos de ${APPLICATION_NAME} del computador."
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Elimine la carpeta de datos de ${APPLICATION_NAME} del computador."
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "¿Desea eliminar la carpeta de datos de ${APPLICATION_NAME}?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Deja sin marcar para mantener la carpeta de datos para uso posterior, o del marque para eliminar la carpeta de datos."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Si, Elimine esta carpeta de datos."
StrCpy $UNINSTALLER_FILE_Detail "Escribiendo Desinstalador"
StrCpy $UNINSTALLER_REGISTRY_Detail "Escribiendo Llaves en el Registro del Instalador"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Déjelo sin marcar para mantener la carpeta de datos para uso posterior o márquelo para eliminar la carpeta de datos."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Sí, elimine esta carpeta de datos."
StrCpy $UNINSTALLER_FILE_Detail "Escribiendo desinstalador"
StrCpy $UNINSTALLER_REGISTRY_Detail "Escribiendo claves en el registro del instalador"
StrCpy $UNINSTALLER_FINISHED_Detail "Terminado"
StrCpy $UNINSTALL_MESSAGEBOX "Parece que ${APPLICATION_NAME} no está instalado en el directorio '$INSTDIR'.$$ ¿Continuar de todos modos? (No Recomendado)"
StrCpy $UNINSTALL_ABORT "Desinstalación cancelada por el usuario"
StrCpy $INIT_NO_QUICK_LAUNCH "Acceso Directo al Lanzador Rápido (N/A)"
StrCpy $INIT_NO_QUICK_LAUNCH "Atajo de inicio rápido (N/A)"
StrCpy $INIT_NO_DESKTOP "Atajo de escritorio (sobreescribe el existente)"
StrCpy $UAC_ERROR_ELEVATE "No se ha podido elevar, Error:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "El instalador requiere acceso administrativo, intente de nuevo"
StrCpy $UAC_ERROR_ELEVATE "No se ha podido elevar, error:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "El instalador requiere acceso administrativo, inténtelo de nuevo"
StrCpy $INIT_INSTALLER_RUNNING "El instalador ya se encuentra en ejecución"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "El desinstalador requiere acceso administrativo, intente de nuevo"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "El desinstalador requiere acceso administrativo, inténtelo de nuevo"
StrCpy $INIT_UNINSTALLER_RUNNING "El desinstalador ya se encuentra en ejecución."
StrCpy $SectionGroup_Shortcuts "Accesos Directos"
StrCpy $SectionGroup_Shortcuts "Accesos directos"

View File

@@ -35,8 +35,8 @@ StrCpy $INIT_UNINSTALLER_RUNNING "El des-instalador ya esta corriendo"
StrCpy $SectionGroup_Shortcuts "Accesos Directos"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing status icons for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Quick Launch Shortcut"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Creating Quick Launch Shortcut"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} essentials."

View File

@@ -15,8 +15,6 @@ StrCpy $PageReinstall_SAME_Field_3 "Avinstallera ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Avinstallera ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Välj underhålls alternativ att utföra."
StrCpy $SEC_APPLICATION_DETAILS "Installerar ${APPLICATION_NAME} väsentligheter."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Statusikoner för Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installerar statusikoner för Windows Explorer"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Start-meny program genväg"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Lägger till genväg för ${APPLICATION_NAME} till Start-menyn."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Skrivbordsgenväg"
@@ -41,6 +39,8 @@ StrCpy $INIT_NO_DESKTOP "Skrivbordsgenväg (skriver över nuvarande)"
StrCpy $UAC_ERROR_ELEVATE "Kunde inte få förhöjda rättigheter, fel:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Detta installationsprogram kräver adminstratörs rättigheter, försök igen"
StrCpy $INIT_INSTALLER_RUNNING "Installationsprogrammet körs redan."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Detta avinstallationsprogram kräver administratörs rättigheter, försök igen"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Detta avinstallationsprogram kräver administratörsrättigheter, försök igen"
StrCpy $INIT_UNINSTALLER_RUNNING "Avinstallationsprogrammet körs redan."
StrCpy $SectionGroup_Shortcuts "Genvägar"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"

View File

@@ -15,8 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "${APPLICATION_NAME} uygulamas
StrCpy $UNINSTALLER_APPDATA_TITLE "${APPLICATION_NAME} uygulamasını kaldır"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Yapmak istediğiniz bakım işlemini seçin."
StrCpy $SEC_APPLICATION_DETAILS "${APPLICATION_NAME} gereklilikleri yükleniyor."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Windows Gezgini için durum simgeleri"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Windows Gezgini için durum simgeleri yükleniyor"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Windows Gezgini için tümleştirme"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Windows Gezgini için Tümleştirme Yükleme"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Başlat Menüsü Program Kısayolu"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "${APPLICATION_NAME} için Başlat Menüsü'ne kısayol ekleniyor."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Masaüstü Kısayolu"

View File

@@ -0,0 +1,46 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Показати примітки до випуску"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Знайдено процес(и) ${APPLICATION_EXECUTABLE}, які необхідно зупинити.$\nХочете щоб програма установки зробила це самостійно?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Завершення процесів ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Не знайдено процеси, які необхідно зупинити!"
StrCpy $PageReinstall_NEW_Field_1 "Знайдено застарілу версію програми ${APPLICATION_NAME}. Рекомендуємо її спочатку видалити. Оберіть подальшу дію та натисніть $\"Далі$\"."
StrCpy $PageReinstall_NEW_Field_2 "Видалити перед установкою"
StrCpy $PageReinstall_NEW_Field_3 "Не видаляти"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Установлено"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Оберіть, як ви хочете установити ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Знайдено новішу версію ${APPLICATION_NAME}! Ми не рекомендуємо встановлювати стару версію. Якщо ви все ж бажаєте встановити цю версію, спочатку видаліть поточну версію. Оберіть подальшу дію та натисніть $\"Далі$\"."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} вже встановлено.↩\nОберіть подальшу дію та натисніть $\"Далі$\"."
StrCpy $PageReinstall_SAME_Field_2 "Додати/Перевстановити компоненти"
StrCpy $PageReinstall_SAME_Field_3 "Видалити ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Видалити ${APPLICATION_NAME}"
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Оберіть опцію обслуговування для виконання."
StrCpy $SEC_APPLICATION_DETAILS "Установка залежностей ${APPLICATION_NAME}."
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Інтеграція з провідником Windows"
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Встановлення інтеграції з провідником Windows"
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Ярлик в меню Пуск"
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Створення ярлика ${APPLICATION_NAME} в меню Пуск."
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Ярлик на Робочому столі"
StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Створення ярлика на Робочому столі"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Ярлик на панелі швидкого запуску"
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Створення ярлика на панелі швидкого запуску"
StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} залежності."
StrCpy $OPTION_SECTION_SC_START_MENU_Desc "${APPLICATION_NAME} ярлик."
StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "Ярлик ${APPLICATION_NAME} на Робочому столі."
StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_Desc "Ярлик ${APPLICATION_NAME} на панелі швидкого запуску."
StrCpy $UNINSTALLER_APPDATA_SUBTITLE "Видалити теку даних ${APPLICATION_NAME} з вашого комп'ютера."
StrCpy $UNINSTALLER_APPDATA_LABEL_1 "Ви дійсно бажаєте видалити теку даних ${APPLICATION_NAME}?"
StrCpy $UNINSTALLER_APPDATA_LABEL_2 "Залиште неактивним, для збереження теки з даними програми, для подальшого використання."
StrCpy $UNINSTALLER_APPDATA_CHECKBOX "Так, видалити теку даних."
StrCpy $UNINSTALLER_FILE_Detail "Збереження Програми видалення"
StrCpy $UNINSTALLER_REGISTRY_Detail "Запис ключів реєстру"
StrCpy $UNINSTALLER_FINISHED_Detail "Завершено"
StrCpy $UNINSTALL_MESSAGEBOX "Скоріш за все ${APPLICATION_NAME} вже встановлено в теку '$INSTDIR'.$↩$\nВсе одно продовжити (не рекомендується)?"
StrCpy $UNINSTALL_ABORT "Видалення перервано користувачем."
StrCpy $INIT_NO_QUICK_LAUNCH "Ярлик в області швидкого запуску (недоступний)"
StrCpy $INIT_NO_DESKTOP "Ярлик на Робочому столі (перезаписати існуючий)"
StrCpy $UAC_ERROR_ELEVATE "Неможливо підняти, помилка:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Для установки потрібні права адміністратора, спробуйте ще раз"
StrCpy $INIT_INSTALLER_RUNNING "Установка вже запущена."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Для видалення потрібні права адміністратора, спробуйте ще раз"
StrCpy $INIT_UNINSTALLER_RUNNING "Програма видалення вже запущено."
StrCpy $SectionGroup_Shortcuts "Ярлики"

View File

@@ -6,6 +6,7 @@
!insertmacro MUI_LANGUAGE "SpanishInternational"
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro MUI_LANGUAGE "Hungarian"
!insertmacro MUI_LANGUAGE "Ukrainian"
!insertmacro MUI_LANGUAGE "French"
!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro MUI_LANGUAGE "Russian"

View File

@@ -86,12 +86,12 @@ msgid "Installing ${APPLICATION_NAME} essentials."
msgstr "Installing ${APPLICATION_NAME} essentials."
#. OPTION_SECTION_SC_SHELL_EXT_SECTION
msgid "Status icons for Windows Explorer"
msgstr "Status icons for Windows Explorer"
msgid "Integration for Windows Explorer"
msgstr "Integration for Windows Explorer"
#. OPTION_SECTION_SC_SHELL_EXT_DetailPrint
msgid "Installing status icons for Windows Explorer"
msgstr "Installing status icons for Windows Explorer"
msgid "Installing Integration for Windows Explorer"
msgstr "Installing Integration for Windows Explorer"
#. OPTION_SECTION_SC_START_MENU_SECTION
msgid "Start Menu Program Shortcut"

View File

@@ -1,35 +0,0 @@
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}
{\f172\froman\fcharset238\fprq2 Times New Roman CE;}{\f173\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f175\froman\fcharset161\fprq2 Times New Roman Greek;}{\f176\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f177\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f178\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f179\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f180\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\f562\fswiss\fcharset238\fprq2 Verdana CE;}{\f563\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f565\fswiss\fcharset161\fprq2 Verdana Greek;}{\f566\fswiss\fcharset162\fprq2 Verdana Tur;}{\f569\fswiss\fcharset186\fprq2 Verdana Baltic;}
{\f570\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\*\cs15 \additive \ul\cf2 \sbasedon10 \styrsid7485074 Hyperlink;}}
{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid6712196\rsid7485074\rsid11352300\rsid15940516}{\*\generator Microsoft Word 11.0.5604;}{\info{\title Processes v1}{\author Hardwired}{\operator Hardwired}{\creatim\yr2004\mo12\dy12\hr23\min42}
{\revtim\yr2004\mo12\dy12\hr23\min51}{\version2}{\edmins9}{\nofpages1}{\nofwords80}{\nofchars458}{\nofcharsws537}{\vern24689}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180
\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot7485074\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain
\qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7485074 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\insrsid7485074\charrsid7485074 Processes v1.0}{\f39\insrsid7485074\charrsid7485074 .0.1
\par }{\f39\fs20\insrsid7485074
\par }\pard \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15940516 {\f39\fs20\insrsid15940516 This software binaries and source-code are free for any kind of use, including commercial use. }{
\f39\fs20\insrsid7485074\charrsid7485074 There is no restriction and no guaranty for using}{\f39\fs20\insrsid7485074\charrsid7485074 t}{\f39\fs20\insrsid7485074\charrsid7485074 his software}{\f39\fs20\insrsid7485074\charrsid7485074 and/or it
s source-code. }{\f39\fs20\insrsid15940516
\par I}{\f39\fs20\insrsid7485074\charrsid7485074 f you use the plug}{\f39\fs20\insrsid7485074\charrsid7485074 -}{\f39\fs20\insrsid7485074\charrsid7485074 in }{\f39\fs20\insrsid7485074\charrsid7485074 and/}{\f39\fs20\insrsid7485074\charrsid7485074 or it}{
\f39\fs20\insrsid7485074\charrsid7485074 s}{\f39\fs20\insrsid7485074\charrsid7485074 source-code, I would }{\f39\fs20\insrsid7485074\charrsid7485074 appreciate }{\f39\fs20\insrsid7485074\charrsid7485074 if my name is mentioned.}{
\f39\fs20\insrsid7485074\charrsid7485074
\par }\pard \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7485074 {\f39\fs20\insrsid7485074\charrsid7485074
\par }{\b\f39\fs20\insrsid7485074\charrsid7485074 Andrei Ciubotaru [Hardwired]
\par }{\f39\fs20\insrsid7485074\charrsid7485074 Lead Developer ICode&Ideas SRL (}{\field\flddirty{\*\fldinst {\f39\fs20\insrsid7485074\charrsid7485074 HYPERLINK "http://www.icode.ro/" }{\f39\fs20\insrsid7485074\charrsid7485074 {\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b02000000170000001500000068007400740070003a002f002f007700770077002e00690063006f00640065002e0072006f002f000000e0c9ea79f9bace118c8200aa004ba90b2a00000068007400740070003a002f002f007700770077002e00690063006f00640065002e007200
6f002f000000}}}{\fldrslt {\cs15\f39\fs20\ul\cf2\insrsid7485074\charrsid7485074 http://www.icode.ro/}}}{\f39\fs20\insrsid7485074\charrsid7485074 )
\par }{\field{\*\fldinst {\f39\fs20\insrsid7485074 HYPERLINK "hardwiredteks@gmail.com" }{\f39\fs20\insrsid15940516\charrsid7485074 {\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b02000000010000000303000000000000c00000000000004600001800000068617264776972656474656b7340676d61696c2e636f6d00ffffadde000000000000000000000000000000000000000000000000}}}{\fldrslt {
\cs15\f39\fs20\ul\cf2\insrsid7485074\charrsid7485074 hardwiredteks@gmail.com}}}{\f39\fs20\insrsid7485074\charrsid7485074 , }{\field{\*\fldinst {\f39\fs20\insrsid7485074 HYPERLINK "hardwired@icode.ro" }{\f39\fs20\insrsid15940516\charrsid7485074
{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b02000000010000000303000000000000c0000000000000460000130000006861726477697265644069636f64652e726f00ffffadde000000000000000000000000000000000000000000000000}}}{\fldrslt {
\cs15\f39\fs20\ul\cf2\insrsid7485074\charrsid7485074 hardwired@icode.ro}}}{\f39\fs20\insrsid7485074\charrsid7485074
\par }}

View File

@@ -1,122 +0,0 @@
----------------------------------------------------------------
----------------------------------------------------------------
Processes (Processes.dll)
Version: 1.0.1.0
Release: 24.february.2005
Description: Nullsoft Installer (NSIS) plug-in for managing?!
Windows processes.
Copyright: © 2004-2005 Hardwired. No rights reserved.
There is no restriction and no guaranty for using
this software.
Author: Andrei Ciubotaru [Hardwired]
Lead Developer ICode&Ideas SRL (http://www.icode.ro/)
hardwiredteks@gmail.com, hardwired@icode.ro
----------------------------------------------------------------
----------------------------------------------------------------
INTRODUCTION
The Need For Plug-in - I need it for the one of my installers.
Briefly: Use it when you need to find\kill a process when
installing\uninstalling some application. Also, use it when you
need to test the presence of a device driver.
SUPPORT
Supported platforms are: WinNT,Win2K,WinXP and Win2003 Server.
DESCRIPTION
Processes::FindProcess <process_name> ;without ".exe"
Searches the currently running processes for the given
process name.
return: 1 - the process was found
0 - the process was not found
Processes::KillProcess <process_name> ; without ".exe"
Searches the currently running processes for the given
process name. If the process is found then the it gets
killed.
return: 1 - the process was found and killed
0 - the process was not found or the process
cannot be killed (insuficient rights)
Processes::FindDevice <device_base_name>
Searches the installed devices drivers for the given
device base name.
(important: I said BASE NAME not FILENAME)
return: 1 - the device driver was found
0 - the device driver was not found
USAGE
First of all, does not matter where you use it. Ofcourse, the
routines must be called inside of a Section/Function scope.
Processes::FindProcess "process_name"
Pop $R0
StrCmp $R0 "1" make_my_day noooooo
make_my_day:
...
noooooo:
...
Processes::KillProcess "process_name"
Pop $R0
StrCmp $R0 "1" dead_meat why_wont_you_die
dead_meat:
...
why_wont_you_die:
...
Processes::FindDevice "device_base_name"
Pop $R0
StrCmp $R0 "1" blabla more_blabla
blabla:
...
more_blabla:
...
THANKS
Sunil Kamath for inspiring me. I wanted to use its FindProcDLL
but my requirements made it imposible.
Nullsoft for creating this very powerfull installer. One big,
free and full-featured (hmmm... and guiless for the moment) mean
install machine!:)
ME for being such a great coder...
... HAHAHAHAHAHAHA!
ONE MORE THING
If you use the plugin or it's source-code, I would apreciate
if my name is mentioned.
----------------------------------------------------------------
----------------------------------------------------------------

View File

@@ -1,8 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// KillProcDLL.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

View File

@@ -1,34 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__780690DC_E128_403D_BC07_780D1B2CC101__INCLUDED_)
#define AFX_STDAFX_H__780690DC_E128_403D_BC07_780D1B2CC101__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <string> // String management...
//From exam28.cpp
#include <tlhelp32.h>
//#include <iostream.h>
#ifdef BORLANDC
#include <string.h>
#include <ctype.h>
#endif
//To make it a NSIS Plug-In
#include "exdll.h"
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__780690DC_E128_403D_BC07_780D1B2CC101__INCLUDED_)

View File

@@ -1,37 +0,0 @@
#include <windows.h>
#include "exdll.h"
HINSTANCE g_hInstance;
HWND g_hwndParent;
void __declspec(dllexport) myFunction(HWND hwndParent, int string_size,
char *variables, stack_t **stacktop)
{
g_hwndParent=hwndParent;
EXDLL_INIT();
// note if you want parameters from the stack, pop them off in order.
// i.e. if you are called via exdll::myFunction file.dat poop.dat
// calling popstring() the first time would give you file.dat,
// and the second time would give you poop.dat.
// you should empty the stack of your parameters, and ONLY your
// parameters.
// do your stuff here
{
char buf[1024];
wsprintf(buf,"$0=%s\n",getuservariable(INST_0));
MessageBox(g_hwndParent,buf,0,MB_OK);
}
}
BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
g_hInstance=hInst;
return TRUE;
}

View File

@@ -1,136 +0,0 @@
#ifndef _EXDLL_H_
#define _EXDLL_H_
//
// only include this file from one place in your DLL.
// (it is all static, if you use it in two places it will fail)
//
#define EXDLL_INIT() { \
g_stringsize = string_size; \
g_stacktop = stacktop; \
g_variables = variables; }
//
// For page showing plug-ins
//
#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)
#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
#define NOTIFY_BYE_BYE 'x'
typedef struct _stack_t
{
struct _stack_t *next;
char text[1]; // this should be the length of string_size
} stack_t;
static unsigned int g_stringsize;
static stack_t **g_stacktop;
static char *g_variables;
enum
{
INST_0, // $0
INST_1, // $1
INST_2, // $2
INST_3, // $3
INST_4, // $4
INST_5, // $5
INST_6, // $6
INST_7, // $7
INST_8, // $8
INST_9, // $9
INST_R0, // $R0
INST_R1, // $R1
INST_R2, // $R2
INST_R3, // $R3
INST_R4, // $R4
INST_R5, // $R5
INST_R6, // $R6
INST_R7, // $R7
INST_R8, // $R8
INST_R9, // $R9
INST_CMDLINE, // $CMDLINE
INST_INSTDIR, // $INSTDIR
INST_OUTDIR, // $OUTDIR
INST_EXEDIR, // $EXEDIR
INST_LANG, // $LANGUAGE
__INST_LAST
};
//
// utility functions (not required but often useful)
//
static int popstring( char *str )
{
stack_t *th;
if( !g_stacktop ||
!*g_stacktop )
return 1;
th = (*g_stacktop);
lstrcpy( str, th->text );
*g_stacktop = th->next;
GlobalFree( (HGLOBAL)th );
return 0;
}
static void pushstring( char *str )
{
stack_t *th;
if( !g_stacktop )
return;
th = (stack_t*)GlobalAlloc( GPTR, sizeof(stack_t) + g_stringsize );
lstrcpyn( th->text, str, g_stringsize );
th->next = *g_stacktop;
*g_stacktop = th;
}
static char *getuservariable( int varnum )
{
if( varnum < 0 ||
varnum >= __INST_LAST )
return NULL;
return (g_variables + varnum*g_stringsize);
}
static void setuservariable( int varnum, char *var )
{
if( var != NULL &&
varnum >= 0 &&
varnum < __INST_LAST )
lstrcpy( g_variables + varnum*g_stringsize, var );
}
#endif//_EXDLL_H_

View File

@@ -1,411 +0,0 @@
#include "stdafx.h"
#include "processes.h"
#include "string.h"
//-------------------------------------------------------------------------------------------
// global variables
lpfEnumProcesses EnumProcesses;
lpfEnumProcessModules EnumProcessModules;
lpfGetModuleBaseName GetModuleBaseName;
lpfEnumDeviceDrivers EnumDeviceDrivers;
lpfGetDeviceDriverBaseName GetDeviceDriverBaseName;
HINSTANCE g_hInstance;
HWND g_hwndParent;
HINSTANCE g_hInstLib;
//-------------------------------------------------------------------------------------------
// main DLL entry
BOOL WINAPI _DllMainCRTStartup( HANDLE hInst,
ULONG ul_reason_for_call,
LPVOID lpReserved )
{
g_hInstance = (struct HINSTANCE__ *)hInst;
return TRUE;
}
//-------------------------------------------------------------------------------------------
// loads the psapi routines
bool LoadPSAPIRoutines( void )
{
if( NULL == (g_hInstLib = LoadLibraryA( "PSAPI.DLL" )) )
return false;
EnumProcesses = (lpfEnumProcesses) GetProcAddress( g_hInstLib, "EnumProcesses" );
EnumProcessModules = (lpfEnumProcessModules) GetProcAddress( g_hInstLib, "EnumProcessModules" );
GetModuleBaseName = (lpfGetModuleBaseName) GetProcAddress( g_hInstLib, "GetModuleBaseNameA" );
EnumDeviceDrivers = (lpfEnumDeviceDrivers) GetProcAddress( g_hInstLib, "EnumDeviceDrivers" );
GetDeviceDriverBaseName = (lpfGetDeviceDriverBaseName) GetProcAddress( g_hInstLib, "GetDeviceDriverBaseNameA" );
if( ( NULL == EnumProcesses ) ||
( NULL == EnumProcessModules ) ||
( NULL == EnumDeviceDrivers ) ||
( NULL == GetModuleBaseName ) ||
( NULL == GetDeviceDriverBaseName ) )
{
FreeLibrary( g_hInstLib );
return false;
}
return true;
}
//-------------------------------------------------------------------------------------------
// free the psapi routines
bool FreePSAPIRoutines( void )
{
EnumProcesses = NULL;
EnumProcessModules = NULL;
GetModuleBaseName = NULL;
EnumDeviceDrivers = NULL;
if( FALSE == FreeLibrary( g_hInstLib ) )
return false;
return true;
}
//-------------------------------------------------------------------------------------------
// find a process by name
// return value: true - process was found
// false - process not found
bool FindProc( char *szProcess )
{
char szProcessName[ 1024 ];
char szCurrentProcessName[ 1024 ];
DWORD dPID[ 1024 ];
DWORD dPIDSize( 1024 );
DWORD dSize( 1024 );
HANDLE hProcess;
HMODULE phModule[ 1024 ];
//
// make the name lower case
//
memset( szProcessName, 0, 1024*sizeof(char) );
sprintf( szProcessName, "%s", szProcess );
strlwr( szProcessName );
//
// load PSAPI routines
//
if( false == LoadPSAPIRoutines() )
return false;
//
// enumerate processes names
//
if( FALSE == EnumProcesses( dPID, dSize, &dPIDSize ) )
{
FreePSAPIRoutines();
return false;
}
//
// walk trough and compare see if the process is running
//
for( int k( dPIDSize / sizeof( DWORD ) ); k >= 0; k-- )
{
memset( szCurrentProcessName, 0, 1024*sizeof(char) );
if( NULL != ( hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dPID[ k ] ) ) )
{
if( TRUE == EnumProcessModules( hProcess, phModule, sizeof(HMODULE)*1024, &dPIDSize ) )
if( GetModuleBaseName( hProcess, phModule[ 0 ], szCurrentProcessName, 1024 ) > 0 )
{
strlwr( szCurrentProcessName );
if( NULL != strstr( szCurrentProcessName, szProcessName ) )
{
FreePSAPIRoutines();
CloseHandle( hProcess );
return true;
}
}
CloseHandle( hProcess );
}
}
//
// free PSAPI routines
//
FreePSAPIRoutines();
return false;
}
//-------------------------------------------------------------------------------------------
// kills a process by name
// return value: true - process was found
// false - process not found
bool KillProc( char *szProcess )
{
char szProcessName[ 1024 ];
char szCurrentProcessName[ 1024 ];
DWORD dPID[ 1024 ];
DWORD dPIDSize( 1024 );
DWORD dSize( 1024 );
HANDLE hProcess;
HMODULE phModule[ 1024 ];
//
// make the name lower case
//
memset( szProcessName, 0, 1024*sizeof(char) );
sprintf( szProcessName, "%s", szProcess );
strlwr( szProcessName );
//
// load PSAPI routines
//
if( false == LoadPSAPIRoutines() )
return false;
//
// enumerate processes names
//
if( FALSE == EnumProcesses( dPID, dSize, &dPIDSize ) )
{
FreePSAPIRoutines();
return false;
}
//
// walk trough and compare see if the process is running
//
for( int k( dPIDSize / sizeof( DWORD ) ); k >= 0; k-- )
{
memset( szCurrentProcessName, 0, 1024*sizeof(char) );
if( NULL != ( hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dPID[ k ] ) ) )
{
if( TRUE == EnumProcessModules( hProcess, phModule, sizeof(HMODULE)*1024, &dPIDSize ) )
if( GetModuleBaseName( hProcess, phModule[ 0 ], szCurrentProcessName, 1024 ) > 0 )
{
strlwr( szCurrentProcessName );
if( NULL != strstr( szCurrentProcessName, szProcessName ) )
{
FreePSAPIRoutines();
//
// kill process
//
if( false == TerminateProcess( hProcess, 0 ) )
{
CloseHandle( hProcess );
return true;
}
//
// refresh systray
//
UpdateWindow( FindWindow( NULL, "Shell_TrayWnd" ) );
//
// refresh desktop window
//
UpdateWindow( GetDesktopWindow() );
CloseHandle( hProcess );
return true;
}
}
CloseHandle( hProcess );
}
}
//
// free PSAPI routines
//
FreePSAPIRoutines();
return false;
}
//-------------------------------------------------------------------------------------------
bool FindDev( char *szDriverName )
{
char szDeviceName[ 1024 ];
char szCurrentDeviceName[ 1024 ];
LPVOID lpDevices[ 1024 ];
DWORD dDevicesSize( 1024 );
DWORD dSize( 1024 );
TCHAR tszCurrentDeviceName[ 1024 ];
DWORD dNameSize( 1024 );
//
// make the name lower case
//
memset( szDeviceName, 0, 1024*sizeof(char) );
sprintf( szDeviceName, "%s", strlwr( szDriverName ) );
//
// load PSAPI routines
//
if( false == LoadPSAPIRoutines() )
return false;
//
// enumerate devices
//
if( FALSE == EnumDeviceDrivers( lpDevices, dSize, &dDevicesSize ) )
{
FreePSAPIRoutines();
return false;
}
//
// walk trough and compare see if the device driver exists
//
for( int k( dDevicesSize / sizeof( LPVOID ) ); k >= 0; k-- )
{
memset( szCurrentDeviceName, 0, 1024*sizeof(char) );
memset( tszCurrentDeviceName, 0, 1024*sizeof(TCHAR) );
if( 0 != GetDeviceDriverBaseName( lpDevices[ k ], tszCurrentDeviceName, dNameSize ) )
{
sprintf( szCurrentDeviceName, "%S", tszCurrentDeviceName );
if( 0 == strcmp( strlwr( szCurrentDeviceName ), szDeviceName ) )
{
FreePSAPIRoutines();
return true;
}
}
}
//
// free PSAPI routines
//
FreePSAPIRoutines();
return false;
}
//-------------------------------------------------------------------------------------------
extern "C" __declspec(dllexport) void FindProcess( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop )
{
char szParameter[ 1024 ];
g_hwndParent = hwndParent;
EXDLL_INIT();
{
popstring( szParameter );
if( true == FindProc( szParameter ) )
wsprintf( szParameter, "1" );
else
wsprintf( szParameter, "0" );
setuservariable( INST_R0, szParameter );
}
}
//-------------------------------------------------------------------------------------------
extern "C" __declspec(dllexport) void KillProcess( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop )
{
char szParameter[ 1024 ];
g_hwndParent = hwndParent;
EXDLL_INIT();
{
popstring( szParameter );
if( true == KillProc( szParameter ) )
wsprintf( szParameter, "1" );
else
wsprintf( szParameter, "0" );
setuservariable( INST_R0, szParameter );
}
}
//-------------------------------------------------------------------------------------------
extern "C" __declspec(dllexport) void FindDevice( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop )
{
char szParameter[ 1024 ];
g_hwndParent = hwndParent;
EXDLL_INIT();
{
popstring( szParameter );
if( true == FindDev( szParameter ) )
wsprintf( szParameter, "1" );
else
wsprintf( szParameter, "0" );
setuservariable( INST_R0, szParameter );
}
}

View File

@@ -1,49 +0,0 @@
#pragma once
//-------------------------------------------------------------------------------------------
// PSAPI function pointers
typedef BOOL (WINAPI *lpfEnumProcesses) ( DWORD *, DWORD, DWORD * );
typedef BOOL (WINAPI *lpfEnumProcessModules) ( HANDLE, HMODULE *, DWORD, LPDWORD );
typedef DWORD (WINAPI *lpfGetModuleBaseName) ( HANDLE, HMODULE, LPTSTR, DWORD );
typedef BOOL (WINAPI *lpfEnumDeviceDrivers) ( LPVOID *, DWORD, LPDWORD );
typedef BOOL (WINAPI *lpfGetDeviceDriverBaseName)( LPVOID, LPTSTR, DWORD );
//-------------------------------------------------------------------------------------------
// Internal use routines
bool LoadPSAPIRoutines( void );
bool FreePSAPIRoutines( void );
bool FindProc( char *szProcess );
bool KillProc( char *szProcess );
bool FindDev( char *szDriverName );
//-------------------------------------------------------------------------------------------
// Exported routines
extern "C" __declspec(dllexport) void FindProcess( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop );
extern "C" __declspec(dllexport) void KillProcess( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop );
extern "C" __declspec(dllexport) void FindDevice( HWND hwndParent,
int string_size,
char *variables,
stack_t **stacktop );

View File

@@ -1,103 +0,0 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "NSIS Plug-in for Windows process management. Only WinNT, Win2K, WinXP and Win2003 Server supported."
VALUE "CompanyName", "Andrei Ciubotaru [Hardwired]"
VALUE "FileDescription", "Windows Processes Management"
VALUE "FileVersion", "1, 0, 0, 1"
VALUE "InternalName", "Processes"
VALUE "LegalCopyright", "Copyright (c) 2004 Hardwired. No rights reserved."
VALUE "OriginalFilename", "Processes.dll"
VALUE "ProductName", "Processes"
VALUE "ProductVersion", "1, 0, 0, 1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -1,21 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "processes", "processes.vcproj", "{3438467F-A719-46DC-93E5-137A8B691727}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{3438467F-A719-46DC-93E5-137A8B691727}.Debug.ActiveCfg = Debug|Win32
{3438467F-A719-46DC-93E5-137A8B691727}.Debug.Build.0 = Debug|Win32
{3438467F-A719-46DC-93E5-137A8B691727}.Release.ActiveCfg = Release|Win32
{3438467F-A719-46DC-93E5-137A8B691727}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

View File

@@ -1,122 +0,0 @@
----------------------------------------------------------------
----------------------------------------------------------------
Processes (Processes.dll)
Version: 1.0.0.1
Release: 12.december.2004
Description:Nullsoft Installer (NSIS) plug-in for managing?!
Windows processes.
Copyright: © 2004 Hardwired. No rights reserved.
There is no restriction and no guaranty for using
this software.
Author: Andrei Ciubotaru [Hardwired]
Lead Developer ICode&Ideas SRL (http://www.icode.ro)
hardwiredteks@gmail.com, hardwired@icode.ro
----------------------------------------------------------------
----------------------------------------------------------------
INTRODUCTION
The Need For Plug-in - I need it for the one of my installers.
Briefly: Use it when you need to find\kill a process when
installing\uninstalling some application. Also, use it when you
need to test the presence of a device driver.
SUPPORT
Supported platforms are: WinNT,Win2K,WinXP and Win2003 Server.
DESCRIPTION
Processes::FindProcess <process_name.exe>
Searches the currently running processes for the given
process name.
return: 1 - the process was found
0 - the process was not found
Processes::KillProcess <process_name.exe>
Searches the currently running processes for the given
process name. If the process is found then the it gets
killed.
return: 1 - the process was found and killed
0 - the process was not found or the process
cannot be killed (insuficient rights)
Processes::FindDevice <device_base_name>
Searches the installed devices drivers for the given
device base name.
(important: I said BASE NAME not FILENAME)
return: 1 - the device driver was found
0 - the device driver was not found
USAGE
First of all, does not matter where you use it. Ofcourse, the
routines must be called inside of a Section/Function scope.
Processes::FindProcess "process_name.exe"
Pop $R0
StrCmp $R0 "1" make_my_day noooooo
make_my_day:
...
noooooo:
...
Processes::KillProcess "process_name.exe"
Pop $R0
StrCmp $R0 "1" dead_meat why_wont_you_die
dead_meat:
...
why_wont_you_die:
...
Processes::FindDevice "device_base_name"
Pop $R0
StrCmp $R0 "1" blabla more_blabla
blabla:
...
more_blabla:
...
THANKS
Sunil Kamath for inspiring me. I wanted to use its FindProcDLL
but my requirements made it imposible.
Nullsoft for creating this very powerfull installer. One big,
free and full-featured (hmmm... and guiless for the moment) mean
install machine!:)
ME for being such a great coder...
... HAHAHAHAHAHAHA!
ONE MORE THING
If you use the plugin or it's source-code, I would apreciate
if my name is mentioned.
----------------------------------------------------------------
----------------------------------------------------------------

View File

@@ -1,222 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="processes"
SccProjectName="processes"
SccLocalPath=".">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FINDPROCDLL_EXPORTS"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="3"
PrecompiledHeaderThrough="stdafx.h"
PrecompiledHeaderFile=".\Debug/processes.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile=".\Debug/processes.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug/processes.pdb"
ImportLibrary=".\Debug/processes.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Debug/processes.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1034"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\bin"
IntermediateDirectory="..\bin\processes"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2"
WholeProgramOptimization="TRUE">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1"
FavorSizeOrSpeed="1"
OptimizeForWindowsApplication="TRUE"
PreprocessorDefinitions="NDEBUG;_WINDOWS;_USRDLL;FINDPROCDLL_EXPORTS"
StringPooling="TRUE"
RuntimeLibrary="0"
StructMemberAlignment="1"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="3"
PrecompiledHeaderThrough="stdafx.h"
PrecompiledHeaderFile="..\bin\processes/processes.pch"
AssemblerListingLocation="..\bin\processes/"
ObjectFile="..\bin\processes/"
ProgramDataBaseFileName="..\bin\processes/"
WarningLevel="4"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libc.lib"
OutputFile="..\bin/Processes.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreAllDefaultLibraries="FALSE"
ProgramDatabaseFile="..\bin/processes.pdb"
OptimizeForWindows98="1"
ImportLibrary="..\bin/processes.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Release/processes.tlb"
HeaderFileName=""/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath="processes.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FINDPROCDLL_EXPORTS;$(NoInherit)"
BasicRuntimeChecks="3"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="1"
PreprocessorDefinitions="NDEBUG;_WINDOWS;_MBCS;_USRDLL;FINDPROCDLL_EXPORTS;$(NoInherit)"/>
</FileConfiguration>
</File>
<File
RelativePath=".\processes.rc">
</File>
<File
RelativePath="StdAfx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FINDPROCDLL_EXPORTS;$(NoInherit)"
BasicRuntimeChecks="3"
UsePrecompiledHeader="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="1"
PreprocessorDefinitions="NDEBUG;_WINDOWS;_MBCS;_USRDLL;FINDPROCDLL_EXPORTS;$(NoInherit)"
UsePrecompiledHeader="1"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
RelativePath="exdll.h">
</File>
<File
RelativePath=".\processes.h">
</File>
<File
RelativePath=".\resource.h">
</File>
<File
RelativePath="StdAfx.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
</Filter>
<File
RelativePath="processes.txt">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,102 +0,0 @@
History:
--------
v0.0.11d - 20090705 (AndersK)
*Fixed UAC_RealWorldFullyLoadedDualModeExample.nsi so installing as admin will allow both modes
v0.0.11c - 20090124 (AndersK)
*Checks for seclogon service on NT5 and returns ERROR_SERVICE_NOT_ACTIVE in $0 if not running
v0.0.11b - 20090102 (AndersK)
*Fixed unicode compile bugs
v0.0.11 - 20081021 (AndersK)
+Added UAC_GetUserShellFolderPath.nsi (Uses the new UAC::GetShellFolderPath)
v0.0.10a - 20081004 (AndersK)
+Added SEE_MASK_NOZONECHECKS flag (experimental)
v0.0.10 - 20080812 (AndersK)
+Added ugly hook hack to the shells run-as dialog on xp, defaults to other user
v0.0.9 - 20080721 (AndersK)
*Fixed UAC_RealWorldFullyLoadedDualModeExample.nsi related bug (Thanks Case)
v0.0.8 - 20080310 (AndersK)
+HTML Readme
+Added UAC::GetOuterHwnd (used by UAC_RealWorldFullyLoadedDualModeExample.nsi)
*Fixed UAC_RealWorldFullyLoadedDualModeExample.nsi
*Major code cleanup in UAC.cpp
-Removed UAC::RunElevatedAndProcessMessages (UAC::RunElevated now supports non NULL $HWNDParent)
-Removed several useless sample scripts
v0.0.7e - 20080229 (AndersK)
*Added ugly hack for hackwnd to find correct title and give us a proper taskbar so the elevation dialog does not get lost (2000,XP (This also fixed Alt-Tab icon on Vista))
*Should compile with MSVC2005 now (Thanks Case)
*More unicode fixes, this time even tested with NSIS Unicode (Only RunElevated and Exec tested)
v0.0.7d - 20080226 (AndersK)
*Fixed a couple of unicode version bugs (Unicode version still untested)
*Fixed weird XP string length bug (Thanks kfank)
v0.0.7c - 20080218 (AndersK)
*Fixed SyncVars string length bug
v0.0.7b - 20080205 (AndersK)
*Fixed DelayLoadDlls() problem on NT4
v0.0.7 - 20080120 (AndersK)
+Added UAC::StackPush (For use with ExecCodeSegment)
v0.0.6d - 20071108 (AndersK)
+Now syncs basic registers/variables before calling UAC::*Exec* and UAC::ExecCodeSegment (r0-r9,R0-R9,$CMDLINE,$INSTDIR,$OUTDIR,$EXEDIR,$LANGUAGE)
+Added UAC::RunElevatedAndProcessMessages, this can be called after .onInit (Very experimental, DO NOT USE)
+New include file with helper macros: UAC.nsh
*Replazed Clammerz hack with a better version
v0.0.6c - 20071014 (AndersK)
+Check for and split up "domain\user" style input in RunAs.cpp for CreateProcessWithLogonW
*Added a ugly hack to trick messagebox'es in .OnInit to appear correctly on Vista (Thanks Clammerz)
v0.0.6b - 20070523 (AndersK)
*Fixed showwindow flag (Thanks for the help kichik)
v0.0.6 - 20070512 (AndersK)
+Added basic language support for MyRunAs dialog.
v0.0.5e - 20070509 (AndersK)
*Fixed detection of UAC mode?
+IPC window is visible (but offscreen) during elevation to help with SetForegroundWindow/Focus problems
v0.0.5d - 20070324 (AndersK)
*Fixed stupid IsAdmin bug
v0.0.5c - 20070304 (AndersK)
*_IsAdmin now uses CheckTokenMembership if it exists ( MSKB:Q118626 / http://blogs.msdn.com/larryosterman/archive/2007/03/14/why-does-kb-118626-use-accesscheck-to-check-if-you-re-a-member-of-the-administrators-group.aspx )
v0.0.5b - 20070301 (AndersK)
*Fixed ExecCodeSegment (Thread now calls CoInitialize)
v0.0.5 - 20070228 (AndersK)
+Added ExecCodeSegment (You can now call ANY code in the context of the original user)
v0.0.4b - 20070226 (AndersK)
*Fixed (My)RunAs font (http://blogs.msdn.com/oldnewthing/archive/2005/02/04/366987.aspx)
v0.0.4 - 20070225 (AndersK)
+Added (My)RunAs dialog, used on Vista when running as LUA with UAC off
+Always uses /NCRC for elevated instance
*Now compiles as UNICODE (Untested, no UnicodeNSIS to test on)
v0.0.3 - 20070224 (AndersK)
+Added Exec/ExecWait
+Added Verb & ShowWindow support for ShellExec[Wait]
v0.0.2 - 20070219 (AndersK)
+Added ShellExecWait
*IPC srv wnd now has its own thread and msg loop
*Removed CRT dependency
*Hopefully loads on Win95 now
v0.0.1 - 20070215 (AndersK)
*Initial release

View File

@@ -1,14 +0,0 @@
This software is provided 'as-is', without any express or implied warranty.
ZLIB/LIBPNG LICENSE
-------------------
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

View File

@@ -1,149 +0,0 @@
/*
Alternative to ExDll.h
v0.0.1 - 20060811 (AndersK)
*/
#pragma once
#include <TChar.h>
typedef TCHAR NSISCH;
#define NSISCALL __stdcall
namespace NSIS {
__forceinline void* NSISCALL MemAlloc(SIZE_T cb) {return GlobalAlloc(LPTR,cb);}
__forceinline void NSISCALL MemFree(void* p) {GlobalFree(p);}
enum {
INST_0, // $0
INST_1, // $1
INST_2, // $2
INST_3, // $3
INST_4, // $4
INST_5, // $5
INST_6, // $6
INST_7, // $7
INST_8, // $8
INST_9, // $9
INST_R0, // $R0
INST_R1, // $R1
INST_R2, // $R2
INST_R3, // $R3
INST_R4, // $R4
INST_R5, // $R5
INST_R6, // $R6
INST_R7, // $R7
INST_R8, // $R8
INST_R9, // $R9
INST_CMDLINE, // $CMDLINE
INST_INSTDIR, // $INSTDIR
INST_OUTDIR, // $OUTDIR
INST_EXEDIR, // $EXEDIR
INST_LANG, // $LANGUAGE
__INST_LAST,
VIDX_TEMP=(INST_LANG+1), //#define state_temp_dir g_usrvars[25]
VIDX_PLUGINSDIR,//# define state_plugins_dir g_usrvars[26]
VIDX_EXEPATH,//#define state_exe_path g_usrvars[27]
VIDX_EXEFILENAME,//#define state_exe_file g_usrvars[28]
VIDX_STATECLICKNEXT,//#define state_click_next g_usrvars[30]
__VIDX_UNDOCLAST
};
typedef struct _stack_t {
struct _stack_t *next;
NSISCH text[ANYSIZE_ARRAY];
} stack_t;
typedef struct {
int autoclose;
int all_user_var;
int exec_error;
int abort;
int exec_reboot;
int reboot_called;
int XXX_cur_insttype; // deprecated
int XXX_insttype_changed; // deprecated
int silent;
int instdir_error;
int rtl;
int errlvl;
//NSIS v2.3x ?
int alter_reg_view;
int status_update;
} exec_flags_type;
typedef struct {
exec_flags_type *exec_flags;
int (NSISCALL *ExecuteCodeSegment)(int, HWND);
void (NSISCALL *validate_filename)(char *);
} extra_parameters;
extern UINT StrSize;
extern stack_t **StackTop;
extern NSISCH*Vars;
inline bool NSISCALL SetErrLvl(extra_parameters*pExtraParams,int ErrLevel) {return pExtraParams? ((pExtraParams->exec_flags->errlvl=ErrLevel)||true):false;}
inline bool NSISCALL SetErrorFlag(extra_parameters*pExtraParams) {return pExtraParams? ((pExtraParams->exec_flags->exec_error=1)||true):false;}
inline bool NSISCALL ClearErrorFlag(extra_parameters*pExtraParams) {return pExtraParams?((pExtraParams->exec_flags->exec_error=0)||true):false;}
__forceinline int NSISCALL ExecuteCodeSegment(extra_parameters*pExtraParams,int pos,HWND hwndProgress=NULL) {
return pExtraParams?pExtraParams->ExecuteCodeSegment(pos,hwndProgress):(/*EXEC_ERROR*/0x7FFFFFFF);
}
static NSISCH* __fastcall GetVar(const int varnum)
{
//ASSERT(NSIS::Vars && NSIS::StrSize);
if (varnum < 0 || varnum >= __VIDX_UNDOCLAST) return NULL;
return NSIS::Vars+(varnum*NSIS::StrSize);
}
inline void NSISCALL SetVarUINT(const int varnum,UINT Value) {
wsprintf(GetVar(varnum),_T("%u"),Value);
}
static stack_t* NSISCALL StackPop() {
if (NSIS::StackTop && *NSIS::StackTop) {
stack_t*s=(*NSIS::StackTop);
*NSIS::StackTop=(*NSIS::StackTop)->next;
return s;
}
return 0;
}
__forceinline void NSISCALL StackFreeItem(stack_t*pStackItem) {NSIS::MemFree(pStackItem);}
static DWORD NSISCALL StackPush(NSISCH*InStr,UINT StackStrSize=NSIS::StrSize) {
if (!NSIS::StackTop)return ERROR_INVALID_PARAMETER;
stack_t*sNew=(stack_t*)NSIS::MemAlloc(sizeof(stack_t)+(StackStrSize*sizeof(NSISCH)));
if (!sNew)return ERROR_OUTOFMEMORY;
lstrcpyn(sNew->text,InStr,StackStrSize);
sNew->next=*NSIS::StackTop;
*NSIS::StackTop=sNew;
return NO_ERROR;
}
}; /* namespace */
#define NSISUTIL_INIT() namespace NSIS {static UINT StrSize;static stack_t **StackTop;static NSISCH*Vars;}//Call in only ONE source file
#define NSISUTIL_INITEXPORT(_v,_strsize,_stackt) NSIS::Vars=_v;NSIS::StrSize=_strsize;NSIS::StackTop=_stackt
//#define NSISEXPORT4(_func,_h,_strsize,_v,_stackt) extern "C" void __declspec(dllexport) __cdecl \
// _func (HWND _h,int _strsize,NSISCH*_v,NSIS::stack_t **_stackt) { NSISUTIL_INITEXPORT(_v,_strsize,_stackt); TRACE("EXPORT::" #_func "\n");
//#define NSISEXPORT5(_func,_h,_strsize,_v,_stackt,_eparams) extern "C" void __declspec(dllexport) __cdecl \
// _func (HWND _h,int _strsize,NSISCH*_v,NSIS::stack_t **_stackt,NSIS::extra_parameters* _eparams) { NSISUTIL_INITEXPORT(_v,_strsize,_stackt); TRACE("EXPORT::" #_func "\n");
//#define NSISEXPORT NSISEXPORT5
#ifdef _MSC_VER
# define EXPORTNSISFUNC extern "C" void __declspec(dllexport) __cdecl
# else
# error EXPORTNSISFUNC needs compiler goo, you are on your own!
# endif
#define NSISFUNCSTART4(_h,_strsize,_v,_stackt) {NSISUTIL_INITEXPORT(_v,_strsize,_stackt);
#define NSISFUNCSTART5(_h,_strsize,_v,_stackt,_eparams) NSISFUNCSTART4(_h,_strsize,_v,_stackt)
#define NSISFUNCSTART NSISFUNCSTART5
#define NSISFUNCEND() }

View File

@@ -1,277 +0,0 @@
//Copyright (C) 2007 Anders Kjersem. Licensed under the zlib/libpng license, see License.txt for details.
/*
If UAC is disabled, the runas verb is broken (Vista RTM) so when running as LUA there is no way to elevate so
we provide our own dialog.
*/
#include "UAC.h"
#ifdef FEAT_CUSTOMRUNASDLG
#include <Lmcons.h>//UNLEN && GNLEN && PWLEN
#include <WindowsX.h>
#include "resource.h"
#include "NSISUtil.h"
using namespace NSIS;
#define ERRAPP_TRYAGAIN (0x20000000|1)
#define MYMAX_DOMAIN (2+max(GNLEN,MAX_COMPUTERNAME_LENGTH)+1)
static LPCTSTR g_RunAsDlgTitle=_T("Run as");
static LPCTSTR g_RunAsHelpText=_T("You may not have the necessary permissions to use all the features of the program you are about to run. You may run this program as a different user or continue to run the program as the current user.");
static LPCTSTR g_RunAsCurrUsrFmt=_T("&Current user (%s)");//Max 50 chars!
static LPCTSTR g_RunAsSpecHelp=_T("Run the program as the &following user:");
FORCEINLINE bool MySetDlgItemText(HWND hDlg,int id,LPCTSTR s) {return MySndDlgItemMsg(hDlg,id,WM_SETTEXT,0,(LPARAM)s)!=0;}
typedef struct {
SHELLEXECUTEINFO*pSEI;
bool AsSelf;
} RUNASDLGDATA;
void MyRunAsFmtCurrUserRadio(HWND hDlg,LPCTSTR Fmt) {
TCHAR bufFullName[MYMAX_DOMAIN+UNLEN+1];
TCHAR buf[50+MYMAX_DOMAIN+UNLEN+1];
*bufFullName=0;
ULONG cch;
if ((!_GetUserNameEx || !_GetUserNameEx(NameSamCompatible,bufFullName,&(cch=COUNTOF(bufFullName)))) &&
!_GetUserName(bufFullName,&(cch=COUNTOF(bufFullName))) ) {
*bufFullName=0;
}
wsprintf(buf,Fmt,*bufFullName?bufFullName:_T("?"));
MySetDlgItemText(hDlg,IDC_RUNASCURR,buf);
// default the "User name:" to Administrator from shell32
if (LoadString(GetModuleHandle(_T("SHELL32.dll")),21763, bufFullName, COUNTOF(bufFullName)) > 0) {
MySetDlgItemText(hDlg,IDC_USERNAME,bufFullName);
}
}
#ifdef FEAT_CUSTOMRUNASDLG_TRANSLATE
void MyRunAsTranslateDlgString(LPCTSTR StrID,LPTSTR Ini,HWND hDlg,INT_PTR DlgItemId,int special=0) {
TCHAR buf[MAX_PATH*2];
DWORD len=GetPrivateProfileString(_T("MyRunAsStrings"),StrID,0,buf,ARRAYSIZE(buf),Ini);
if (len) {
if (IDC_RUNASCURR==special)
MyRunAsFmtCurrUserRadio(hDlg,buf);
else
(DlgItemId==-1) ? SetWindowText(hDlg,buf) : MySetDlgItemText(hDlg,DlgItemId,buf);
}
}
void MyRunAsTranslateDlg(HWND hDlg) {
DWORD len;
TCHAR buf[MAX_PATH*2];
HMODULE hDll=GetWindowInstance(hDlg);ASSERT(hDll);
if ( (len=GetModuleFileName(hDll,buf,ARRAYSIZE(buf))) <1)return;
buf[len-3]=0;
lstrcat(buf,_T("lng"));
MyRunAsTranslateDlgString(_T("DlgTitle"),buf,hDlg,-1);
MyRunAsTranslateDlgString(_T("HelpText"),buf,hDlg,IDC_HELPTEXT);
MyRunAsTranslateDlgString(_T("OptCurrUser"),buf,hDlg,IDC_RUNASCURR,IDC_RUNASCURR);
MyRunAsTranslateDlgString(_T("OptOtherUser"),buf,hDlg,IDC_RUNASSPEC);
MyRunAsTranslateDlgString(_T("Username"),buf,hDlg,IDC_LBLUSER);
MyRunAsTranslateDlgString(_T("Pwd"),buf,hDlg,IDC_LBLPWD);
MyRunAsTranslateDlgString(_T("OK"),buf,hDlg,IDOK);
MyRunAsTranslateDlgString(_T("Cancel"),buf,hDlg,IDCANCEL);
HWND h=GetDlgItem(hDlg,IDC_RUNASCURR);
if (GetPrivateProfileInt(_T("MyRunAsCfg"),_T("DisableCurrUserOpt"),false,buf))EnableWindow(h,false);
if (GetPrivateProfileInt(_T("MyRunAsCfg"),_T("HideCurrUserOpt"),false,buf))ShowWindow(h,false);
}
#endif
bool ErrorIsLogonError(DWORD err) {
switch (err) {
case ERROR_LOGON_FAILURE:
case ERROR_ACCOUNT_RESTRICTION:
case ERROR_INVALID_LOGON_HOURS:
case ERROR_INVALID_WORKSTATION:
case ERROR_PASSWORD_EXPIRED:
case ERROR_ACCOUNT_DISABLED:
case ERROR_NONE_MAPPED:
case ERROR_NO_SUCH_USER:
case ERROR_INVALID_ACCOUNT_NAME:
return true;
}
return false;
}
void VerifyOKBtn(HWND hDlg,RUNASDLGDATA*pRADD) {
const bool HasText=pRADD?(pRADD->AsSelf?true:MySndDlgItemMsg(hDlg,IDC_USERNAME,WM_GETTEXTLENGTH)>0):false;
EnableWindow(GetDlgItem(hDlg,IDOK),HasText);
}
void SetDlgState(HWND hDlg,bool AsSelf,RUNASDLGDATA*pRADD) {
if (pRADD)pRADD->AsSelf=AsSelf;
MySndDlgItemMsg(hDlg,IDC_RUNASCURR,BM_SETCHECK,AsSelf?BST_CHECKED:BST_UNCHECKED);
MySndDlgItemMsg(hDlg,IDC_RUNASSPEC,BM_SETCHECK,!AsSelf?BST_CHECKED:BST_UNCHECKED);
int ids[]={IDC_USERNAME,IDC_PASSWORD,IDC_LBLUSER,IDC_LBLPWD};
for (int i=0; i<COUNTOF(ids);++i)EnableWindow(GetDlgItem(hDlg,ids[i]),!AsSelf);
VerifyOKBtn(hDlg,pRADD);
}
INT_PTR CALLBACK MyRunAsDlgProc(HWND hwnd,UINT uMsg,WPARAM wp,LPARAM lp) {
RUNASDLGDATA*pRADD=(RUNASDLGDATA*)GetWindowLongPtr(hwnd,GWLP_USERDATA);
switch(uMsg) {
//case WM_DESTROY:
// break;
case WM_CLOSE:
return DestroyWindow(hwnd);
case WM_INITDIALOG:
{
pRADD=(RUNASDLGDATA*)lp;ASSERT(pRADD);
SetWindowLongPtr(hwnd,GWLP_USERDATA,lp);
Edit_LimitText(GetDlgItem(hwnd,IDC_USERNAME),UNLEN+1+MYMAX_DOMAIN); //room for "foo@BAR" or "BAR\foo"
Edit_LimitText(GetDlgItem(hwnd,IDC_PASSWORD),PWLEN);
const HINSTANCE hSh32=GetModuleHandle(_T("SHELL32.dll"));
const HICON hIco=(HICON)LoadImage(hSh32,MAKEINTRESOURCE(194),IMAGE_ICON,32,32,LR_SHARED);
MySndDlgItemMsg(hwnd,IDC_SHICON,STM_SETICON,(WPARAM)hIco);
SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)g_RunAsDlgTitle);
MySetDlgItemText(hwnd,IDC_HELPTEXT,g_RunAsHelpText);
MyRunAsFmtCurrUserRadio(hwnd,g_RunAsCurrUsrFmt);
MySetDlgItemText(hwnd,IDC_RUNASSPEC,g_RunAsSpecHelp);
#ifdef FEAT_CUSTOMRUNASDLG_TRANSLATE
MyRunAsTranslateDlg(hwnd);
#endif
SetDlgState(hwnd,false,pRADD);
#if defined(BUILD_DBG) && 0 //auto login used during testing ;)
SetDlgItemText(hwnd,IDC_USERNAME,_T("root"));
SetDlgItemText(hwnd,IDC_PASSWORD,_T("???"));
Sleep(1);PostMessage(hwnd,WM_COMMAND,IDOK,0);
#endif
}
return true;
case WM_COMMAND:
{
switch(HIWORD(wp)) {
case EN_CHANGE:
VerifyOKBtn(hwnd,pRADD);
break;
case EN_SETFOCUS:
case BN_CLICKED:
if (LOWORD(wp)<=IDCANCEL)break;
SetDlgState(hwnd,LOWORD(wp)==IDC_RUNASCURR,pRADD);
return FALSE;
}
INT_PTR exitcode=!pRADD?-1:IDCANCEL;
switch(LOWORD(wp)) {
case IDOK:
if (pRADD) {
SHELLEXECUTEINFO&sei=*pRADD->pSEI;
PROCESS_INFORMATION pi={0};
DWORD ec=NO_ERROR;
WCHAR*wszExec;//Also used as TCHAR buffer in AsSelf mode
bool PerformTCharFmt=pRADD->AsSelf;
//const DWORD CommonStartupInfoFlags=STARTF_FORCEONFEEDBACK;
#ifdef UNICODE
PerformTCharFmt=true;
#endif
wszExec=(WCHAR*)NSIS::MemAlloc( (pRADD->AsSelf?sizeof(TCHAR):sizeof(WCHAR)) *(lstrlen(sei.lpFile)+1+lstrlen(sei.lpParameters)+1));
if (!wszExec)ec=ERROR_OUTOFMEMORY;
if (PerformTCharFmt)wsprintf((TCHAR*)wszExec,_T("%s%s%s"),sei.lpFile,((sei.lpParameters&&*sei.lpParameters)?_T(" "):_T("")),sei.lpParameters);
if (!ec) {
if (pRADD->AsSelf) {
STARTUPINFO si={sizeof(si)};
TRACEF("MyRunAs:CreateProcess:%s|\n",wszExec);
ec=(CreateProcess(0,(TCHAR*)wszExec,0,0,false,0,0,0,&si,&pi)?NO_ERROR:GetLastError());
}
else {
//All Wide strings!
WCHAR wszPwd[PWLEN+1];
WCHAR wszUName[UNLEN+1+MYMAX_DOMAIN+1];
STARTUPINFOW siw={sizeof(siw)};
WCHAR*p;
#ifndef UNICODE
//Build unicode string, we already know the buffer is big enough so no error handling
p=wszExec;
MultiByteToWideChar(CP_THREAD_ACP,0,sei.lpFile,-1,p,0xFFFFFF);
if (sei.lpParameters && *sei.lpParameters) {
p+=lstrlen(sei.lpFile);*p++=L' ';*p=0;
MultiByteToWideChar(CP_THREAD_ACP,0,sei.lpParameters,-1,p,0xFFFFFF);
}
#endif
SendMessageW(GetDlgItem(hwnd,IDC_USERNAME),WM_GETTEXT,COUNTOF(wszUName),(LPARAM)wszUName);
SendMessageW(GetDlgItem(hwnd,IDC_PASSWORD),WM_GETTEXT,COUNTOF(wszPwd),(LPARAM)wszPwd);
//Try to find [\\]domain\user and split into username and domain strings
WCHAR*pUName=wszUName,*pDomain=0;
p=wszUName;
//if (*p==p[1]=='\\')pUName=(p+=2);else \ //Should we still split things up if the string starts with \\ ? Is it possible to use \\machine\user at all?
++p;//Don't parse "\something", require at least one char before backslash "?[*\]something"
while(*p && *p!='\\')++p;
if (*p=='\\') {
pDomain=pUName;
pUName=p+1;*p=0;
}
TRACEF("MyRunAs:CreateProcessWithLogonW:%ws|%ws|%ws|%ws|\n",pUName,pDomain?pDomain:L"NO?DOMAIN",wszPwd,wszExec);
ec=(_CreateProcessWithLogonW(pUName,pDomain?pDomain:0,wszPwd,LOGON_WITH_PROFILE,0,wszExec,0,0,0,&siw,&pi)?NO_ERROR:GetLastError());
TRACEF("MyRunAs:CreateProcessWithLogonW: ret=%u\n",ec);
SecureZeroMemory(wszPwd,sizeof(wszPwd));//if (wszPwd) {volatile WCHAR*_p=wszPwd;for(;_p&&*_p;++_p)*_p=1;if (_p)*wszPwd=0;}//Burn password (And attempt to prevent compiler from removing it)
if (ec && ErrorIsLogonError(ec)) {
LPTSTR szMsg;
DWORD ret=FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,0,ec,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&szMsg,0,0);
if (ret) {
ec=ERRAPP_TRYAGAIN;
MessageBox(hwnd,szMsg,0,MB_ICONWARNING);
LocalFree(szMsg);
}
else ec=GetLastError();
}
}
}
NSIS::MemFree(wszExec);
if (pi.hThread)CloseHandle(pi.hThread);
if (ERRAPP_TRYAGAIN==ec)break;
if (ec) {
SetLastError(ec);
exitcode=-1;
}
else {
pRADD->pSEI->hProcess=pi.hProcess;
exitcode=IDOK;
}
}
case IDCANCEL:
EndDialog(hwnd,exitcode);
}
}
break;
}
return FALSE;
}
DWORD MyRunAs(HINSTANCE hInstDll,SHELLEXECUTEINFO&sei) {
INT_PTR ec;
ASSERT(sei.cbSize>=sizeof(SHELLEXECUTEINFO) && hInstDll);
if (ec=DelayLoadDlls())return ec;
ASSERT(_CreateProcessWithLogonW && _GetUserName);
RUNASDLGDATA radd={0};
radd.pSEI=&sei;
ec=DialogBoxParam(hInstDll,MAKEINTRESOURCE(IDD_MYRUNAS),sei.hwnd,MyRunAsDlgProc,(LPARAM)&radd);
TRACEF("MyRunAs returned %d (%s|%s)\n",ec,sei.lpFile,sei.lpParameters);
switch(ec) {
case 0:
return ERROR_INVALID_HANDLE;//DialogBoxParam returns 0 on bad hwnd
case IDOK:
return NO_ERROR;
case IDCANCEL:
return ERROR_CANCELLED;
}
//TODO:BUGBUG: on vista, the last error seems to get lost, should probably put it in RUNASDLGDATA and always return IDOK
return GetLastError();
}
#ifdef BUILD_DBG
// RunDll exports are __stdcall, we dont care about that for this debug export, rundll32.exe is able to handle this mistake
extern "C" void __declspec(dllexport) __cdecl DBGRDMyRunAs(HWND hwnd,HINSTANCE hinst,LPTSTR lpCmdLine,int nCmdShow) {
SHELLEXECUTEINFO sei={sizeof(sei)};
sei.lpFile=_T("Notepad.exe");//sei.lpParameters=_T("param1");
TRACEF("ec=%d\n",MyRunAs(GetModuleHandle(_T("UAC.dll")),sei));
}
#endif
#endif /* FEAT_CUSTOMRUNASDLG */

View File

@@ -1,222 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>UAC plug-in readme</title>
<script type="text/javascript">
function NavGL(q){window.open("http://www.google.com/search?hl=en&btnI=I&num=2&q="+escape(q));return 0;}
</script>
<style type="text/css">
html,body {background-color:#FFF; color:#000;}
a:link, a:visited, a:active {color:#00F;}
h2 {border-bottom:0.1em solid #000;}
#docHdrHdln{text-align:center;}
.importanttxt {color:#e00;}
.code {font-family:monospace;}
.nsisvar {color:#C00;}
.str {color:#390}
.inifile {background-color:#EEE;border:1px solid #000;padding:0.2em;}
.inicomment {background-color:#f5f5c5;color:#555;}
table.piexport {text-align:left;margin-bottom:1em;}
table.piexport td {vertical-align:top;}
table.piexport table.ret {padding:0;margin:0;border:0;}
</style>
</head><body>
<h1 id="docHdrHdln">UAC plug-in</h1>
<code><pre>
Interactive User (MediumIL) Admin user(HighIL)
+++[Setup.exe]++++++++++++++ +++[Setup.exe]++++++++++++++
+ + + +
+ ***[.OnInit]************ + + ***[.OnInit]************ +
+ * UAC::RunElevated >---+-+------>+ * * +
+ * NSIS.Quit() * + + * * +
+ ************************ + + ***********||*********** +
+ + + || +
+ + + \/ +
+ ***[Sections]*********** + + ***[Sections]*********** +
+ * * + /--+-+-< UAC::Exec * +
+ ************************ + | + ************************ +
+ + | + +
+ Win32.CreateProcess() <-+----/ + +
+ + + +
++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++
</pre></code>
<h2>Contents</h2>
<ul>
<li><a href="#exports">Plugin Functions</a>
<li><a href="#lang">Language support</a>
<li><a href="#knownissues">Known Issues</a>
<li><a href="#glossary">Glossary</a>
</ul>
<a name="exports"><h2>Plugin Functions</h2></a><div class="CntSec"><p>
Every function will try to emulate the basic NSIS instruction (of similar name) when UAC::RunElevated has not "succeeded" or running on a system that does not support elevation (Win9x/NT4)</p>
<table class="piexport"><tr><th colspan=2>UAC::RunElevated</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td>Win32 error code (0 on success, 1223 if user aborted elevation dialog, anything else should be treated as a fatal error)</td></tr>
<tr><td><span class="nsisvar">$1</span></td><td><span class="code">If <span class="nsisvar">$0</span>==0</span>:
<table class="ret">
<tr><td>0</td><td>UAC is not supported by the OS</td></tr>
<tr><td>1</td><td>Started a elevated child process, the current process should act like a wrapper (Call Quit without any further processing)</td></tr>
<tr><td>2</td><td>The process is already running @ HighIL (Member of admin group)</td></tr>
<tr><td>3</td><td>You should call RunElevated again (This can happen if a user without admin priv. is used in the runas dialog)</td></tr>
</table>
</td></tr>
<tr><td><span class="nsisvar">$2</span></td><td><span class="code">If <span class="nsisvar">$0</span>==0 && <span class="nsisvar">$1</span>==1</span>: ExitCode of the elevated fork process (The NSIS errlvl is also set)</td></tr>
<tr><td><span class="nsisvar">$3</span></td><td><span class="code">If <span class="nsisvar">$0</span>==0</span>: 1 if the user is a member of the admin group or 0 otherwise</td></tr>
</table></td></tr>
<tr><td>Description:</td><td>Allows non-admin/UAC.LUA users to re-spawn the installer as another user and UAC.Admin users to elevate.</td></tr>
</table>
<!--table class="piexport"><tr><th colspan=2>UAC::RunElevatedAndProcessMessages <i style="font-size:smaller;">(Experimental)</i></th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td><i>See UAC::RunElevated</i></td></tr>
<tr><td>Description:</td><td>Version of UAC::RunElevated that can be called from a page</td></tr>
</table-->
<table class="piexport"><tr><th colspan=2>UAC::Unload</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td></td></tr>
<tr><td>Description:</td><td>Cleanup, you must call this function in .OnInstFailed, .onUserAbort and .OnInstSuccess</td></tr>
</table>
<table class="piexport"><tr>
<th colspan=2>UAC::Exec</th></tr>
<tr><td>Parameters:</td><td>&lt;INT:ShowWindow&gt; &lt;STR:App&gt; &lt;STR:Parameters&gt; &lt;STR:WorkingDir&gt;</td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td>Win32 error code, 0 on success (ErrorFlag is also set on error)</td></tr>
</table></td></tr>
</table>
<table class="piexport"><tr>
<th colspan=2>UAC::ExecWait</th></tr>
<tr><td>Parameters:</td><td>&lt;INT:ShowWindow&gt; &lt;STR:App&gt; &lt;STR:Parameters&gt; &lt;STR:WorkingDir&gt;</td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td>Win32 error code, 0 on success (ErrorFlag is also set on error)</td></tr>
<tr><td><span class="nsisvar">$1</span></td><td>Exitcode of new process</td></tr>
</table></td></tr>
</table>
<table class="piexport"><tr>
<th colspan=2>UAC::ShellExec</th></tr>
<tr><td>Parameters:</td><td>&lt;STR:Verb&gt; &lt;INT:ShowWindow&gt; &lt;STR:App&gt; &lt;STR:Parameters&gt; &lt;STR:WorkingDir&gt;</td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td>Win32 error code, 0 on success (ErrorFlag is also set on error)</td></tr>
</table></td></tr>
</table>
<table class="piexport"><tr>
<th colspan=2>UAC::ShellExecWait</th></tr>
<tr><td>Parameters:</td><td>&lt;STR:Verb&gt; &lt;INT:ShowWindow&gt; &lt;STR:App&gt; &lt;STR:Parameters&gt; &lt;STR:WorkingDir&gt;</td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td>Win32 error code, 0 on success (ErrorFlag is also set on error)</td></tr>
<tr><td><span class="nsisvar">$1</span></td><td>Exitcode of new process</td></tr>
</table></td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::IsAdmin</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td><span class="nsisvar">$0</span> (BOOL) result</td></tr>
<tr><td>Description:</td><td>Check current thread/process token for a non-deny admin group SID entry</td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::ExecCodeSegment</th></tr>
<tr><td>Parameters:</td><td>&lt;INT:NSISFunctionAddress&gt;</td></tr>
<tr><td>Returns:</td><td>[None] (ErrorFlag is set on error)</td></tr>
<tr><td>Description:</td><td>Calls NSIS function in LUA/outer instance (If you use instructions that alter the UI or the stack/variables in the code segment (StrCpy,Push/Pop/Exch,DetailPrint etc.) they will affect the hidden wrapper installer and not "your" installer instance)</td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::StackPush</th></tr>
<tr><td>Parameters:</td><td>&lt;STR:String&gt;</td></tr>
<tr><td>Returns:</td><td>[None] (ErrorFlag is set on error)</td></tr>
<tr><td>Description:</td><td>Push to outer instance stack (For use with UAC::ExecCodeSegment)</td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::GetOuterHwnd</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td><span class="nsisvar">$0</span> HWNDPARENT of outer instance</td></tr>
<tr><td>Description:</td><td>For use with ${UAC.RunElevatedAndProcessMessages}</td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::SupportsUAC</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td><span class="nsisvar">$0</span> !=0 if supported</td></tr>
<tr><td>Description:</td><td>Check if the OS supports UAC (And the user has UAC turned on) <span class="importanttxt">This function only tests if UAC is active, will return 0 on NT5 even though runas is implemented on those platforms, will also return 0 on NT6+ if UAC is off. You should only call this function during testing, NOT to determine if you can call UAC::RunElevated</span></td></tr>
</table>
<table class="piexport"><tr><th colspan=2>UAC::GetElevationType</th></tr>
<tr><td>Parameters:</td><td></td></tr>
<tr><td>Returns:</td><td>
<table class="ret">
<tr><td><span class="nsisvar">$0</span></td><td><a href="#" OnClick="return NavGL('TOKEN_ELEVATION_TYPE Enumeration')">TOKEN_ELEVATION_TYPE</a>:
<table class="ret">
<tr><td>0</td><td>Unsupported/Failed (ErrorFlag is also set)</td></tr>
<tr><td>1</td><td>TokenElevationTypeDefault: User is not using a split token (UAC disabled)</td></tr>
<tr><td>2</td><td>TokenElevationTypeFull: UAC enabled, the (current) process is elevated</td></tr>
<tr><td>3</td><td>TokenElevationTypeLimited: UAC enabled, the process is not elevated</td></tr>
</table>
</td></tr>
</table></td></tr>
</table>
</div>
<a name="lang"><h2>Language support</h2></a><div class="CntSec">
<p>If the plugin is built with FEAT_CUSTOMRUNASDLG_TRANSLATE (Enabled by default),
you can extract a file named <span class="str">UAC.LNG</span> to <span class="nsisvar">$pluginsdir</span>.
It is a ini file with the following sections:
</p><pre class="inifile">
[MyRunAsCfg]
<span class="inicomment">;Set to 1 to disable the radio button</span>
DisableCurrUserOpt=
<span class="inicomment">;Set to 1 to hide the radio button</span>
HideCurrUserOpt=
[MyRunAsStrings]
DlgTitle=Hello There!
HelpText=Just do your thing!
<span class="inicomment">;Label for current user radio button, %s is replaced with result of GetUserNameEx(NameSamCompatible,...)</span>
OptCurrUser=Self service (%s)
OptOtherUser=Run as someone:
UserName=Who:
Pwd=PIN:
OK=Okey!
Cancel=No Way</pre>
</div>
<a name="knownissues"><h2>Known Issues</h2></a><div class="CntSec">
<ul>
<li>UACPI.KI#1: DetailPrint in outer process is ignored
<li>UACPI.KI#2: Elevation can fail if the installer is located on a remote share that requires authentication
</ul>
</div>
<a name="glossary"><h2>Glossary</h2></a><div class="CntSec">
<ul>
<li>AAM: Admin Approval Mode
<li>IL: Integrity level (Part of the new MIC/WIC security levels added to NT6)
<li>LUA: Limited/Least-privilege User Account
<li>MIC: <a href="http://en.wikipedia.org/wiki/Mandatory_Integrity_Control">Mandatory Integrity Controls</a> (Now known as WIC)
<li>UAC: User Account Control (Part of the UAP umbrella)
<li>UAP: User Account Protection
<li>WIC: <a href="http://www.securityfocus.com/infocus/1887">Windows Integrity Controls</a>
<li>Win32 error code: Standard windows error codes, ERROR_???
</ul>
</div>
</body></html>

View File

@@ -1,191 +0,0 @@
/*
=======================
UAC helper include file
.......................
Macros starting with UAC.I should only be called from the installer and vice versa for UAC.U macros.
*/
!ifndef UAC_HDR__INC
!define UAC_HDR__INC
!include LogicLib.nsh
!define UAC.RunElevatedAndProcessMessages 'UAC::RunElevated '
!define UAC.Unload 'UAC::Unload '
!define UAC.StackPush 'UAC::StackPush '
/*!macro _UAC.BuildOnInitElevationFunc _funcprefix
Function ${_funcprefix}onInit
!ifmacrodef
FunctionEnd
!macroend*/
!macro _UAC.GenerateSimpleFunction _funcprefix _funcName _funcCode
Function ${_funcprefix}${_funcName}
${_funcCode}
#messagebox mb_ok "${_funcprefix}${_funcName}"
FunctionEnd
!macroend
!macro _UAC.TryDef _d _v
!ifndef ${_d}
!define ${_d} "${_v}"
!endif
!macroend
!macro _UAC.InitStrings _modeprefix
!insertmacro _UAC.TryDef UACSTR.UnDataFile "UAC.dat"
!insertmacro _UAC.TryDef UACSTR.${_modeprefix}ElvWinErr "Unable to elevate , error $0"
!ifNdef __UNINSTALL__
!insertmacro _UAC.TryDef UACSTR.${_modeprefix}ElvAbortReqAdmin "This installer requires admin access, aborting!"
!insertmacro _UAC.TryDef UACSTR.${_modeprefix}ElvMustTryAgain "This installer requires admin access, try again"
!else
!insertmacro _UAC.TryDef UACSTR.${_modeprefix}ElvAbortReqAdmin "This uninstaller requires admin access, aborting!"
!insertmacro _UAC.TryDef UACSTR.${_modeprefix}ElvMustTryAgain "This uninstaller requires admin access, try again"
!endif
!macroend
!ifmacroNdef _UAC.GenerateUninstallerTango
!macro _UAC.GenerateUninstallerTango UninstallerFileName
!ifdef __GLOBAL__
!error "UAC: Needs to be called inside a function"
!endif
!ifNdef __UNINSTALL__
!error "UAC: _UAC.GenerateUninstallerTango should only be called by uninstaller, see http://forums.winamp.com/showthread.php?threadid=280330"
!endif
!ifNdef UAC_UNINSTALLERTANGOFORALLPLATFORMS
!include WinVer.nsh
!endif
!insertmacro _UAC.InitStrings 'U.'
ReadIniStr $0 "$ExeDir\${UACSTR.UnDataFile}" UAC "Un.Ready"
${IF} $0 != 1
!ifNdef UAC_UNINSTALLERTANGOFORALLPLATFORMS
${AndIf} ${AtLeastWinVista}
!endif
InitPluginsDir
WriteIniStr "$PluginsDir\${UACSTR.UnDataFile}" UAC "Un.Ready" 1
CopyFiles /SILENT "$EXEPATH" "$PluginsDir\${UninstallerFileName}"
StrCpy $0 ""
${IfThen} ${Silent} ${|} StrCpy $0 "/S " ${|}
ExecWait '"$PluginsDir\${UninstallerFileName}" $0/NCRC _?=$INSTDIR' $0
SetErrorLevel $0
Quit
${EndIf}
!macroend
!endif
!ifmacroNdef _UAC.GenerateOnInitElevationCode
!macro _UAC.GenerateOnInitElevationCode _modeprefix
!ifndef __FUNCTION__
!error "UAC: Needs to be called inside a function"
!endif
!insertmacro _UAC.InitStrings ${_modeprefix}
!define _UAC.GOIECUniq L${__LINE__}
UAC_Elevate_${_UAC.GOIECUniq}:
UAC::RunElevated
StrCmp 1223 $0 UAC_ElevationAborted_${_UAC.GOIECUniq} ; UAC dialog aborted by user?
StrCmp 0 $0 0 UAC_Err_${_UAC.GOIECUniq} ; Error?
StrCmp 1 $1 0 UAC_Success_${_UAC.GOIECUniq} ;Are we the real deal or just the wrapper?
Quit
UAC_Err_${_UAC.GOIECUniq}:
MessageBox mb_iconstop "${UACSTR.${_modeprefix}ElvWinErr}"
Abort
UAC_ElevationAborted_${_UAC.GOIECUniq}:
MessageBox mb_iconstop "${UACSTR.${_modeprefix}ElvAbortReqAdmin}"
Abort
UAC_Success_${_UAC.GOIECUniq}:
# if $0==0 && $3==1, we are a member of the admin group (Any OS)
# if $0==0 && $1==0, UAC not supported (Probably <NT6), run as normal?
# if $0==0 && $1==3, we can try to elevate again
StrCmp 1 $3 /*+4*/ UAC_Done_${_UAC.GOIECUniq} ;Admin?
StrCmp 3 $1 0 UAC_ElevationAborted_${_UAC.GOIECUniq} ;Try again or abort?
MessageBox mb_iconexclamation "${UACSTR.${_modeprefix}ElvMustTryAgain}" ;Inform user...
goto UAC_Elevate_${_UAC.GOIECUniq} ;...lets try again
UAC_Done_${_UAC.GOIECUniq}:
!undef _UAC.GOIECUniq
!macroend
!endif
!define UAC.I.Elevate.AdminOnly '!insertmacro UAC.I.Elevate.AdminOnly '
!macro UAC.I.Elevate.AdminOnly
!insertmacro _UAC.GenerateOnInitElevationCode 'I.'
!macroend
!define UAC.U.Elevate.AdminOnly '!insertmacro UAC.U.Elevate.AdminOnly '
!macro UAC.U.Elevate.AdminOnly _UninstallerName
!ifNdef UAC_DISABLEUNINSTALLERTANGO
!insertmacro _UAC.GenerateUninstallerTango "${_UninstallerName}"
!endif
!insertmacro _UAC.GenerateOnInitElevationCode 'U.'
!macroend
!define UAC.AutoCodeUnload '!insertmacro UAC.AutoCodeUnload '
!macro UAC.AutoCodeUnload _HasUninstaller
!insertmacro _UAC.GenerateSimpleFunction "" .OnInstFailed '${UAC.Unload}'
!insertmacro _UAC.GenerateSimpleFunction "" .OnInstSuccess '${UAC.Unload}'
!ifNdef MUI_INCLUDED
!insertmacro _UAC.GenerateSimpleFunction "" .onUserAbort '${UAC.Unload}'
!else
!ifNdef MUI_CUSTOMFUNCTION_ABORT
!error "UAC: must call $$ {UAC.Unload} in MUI_CUSTOMFUNCTION_ABORT!"
!endif
!endif
!if "${_HasUninstaller}" != ""
!insertmacro _UAC.GenerateSimpleFunction "un" .onUninstFailed '${UAC.Unload}'
!insertmacro _UAC.GenerateSimpleFunction "un" .onUninstSuccess '${UAC.Unload}'
!ifNdef MUI_INCLUDED
!insertmacro _UAC.GenerateSimpleFunction "un" .onUserAbort '${UAC.Unload}'
!else
!ifNdef MUI_CUSTOMFUNCTION_ABORT
!error "UAC: must call $$ {UAC.Unload} in MUI_CUSTOMFUNCTION_(UN)ABORT!"
!endif
!endif
!endif
!macroend
!define UAC.FastCallFunctionAsUser '!insertmacro UAC.FastCallFunctionAsUser '
!macro UAC.FastCallFunctionAsUser _func _var
GetFunctionAddress ${_var} ${_func}
UAC::ExecCodeSegment ${_var}
!macroend
!define UAC.CallFunctionAsUser '!insertmacro UAC.CallFunctionAsUser '
!macro UAC.CallFunctionAsUser _func
push $R9
!insertmacro UAC.FastCallFunctionAsUser ${_func} $R9
pop $R9
!macroend
!define UAC.FastCallGetOuterInstanceHwndParent UAC::GetOuterHwnd
!define UAC.GetOuterInstanceHwndParent '!insertmacro UAC.GetOuterInstanceHwndParent '
!macro UAC.GetOuterInstanceHwndParent _var
push $0
${UAC.FastCallGetOuterInstanceHwndParent}
Exch $0
Pop ${_var}
!macroend
!macro _UAC.DumpEx _disp _f _fp _v
${_f} ${_fp}
DetailPrint "${_disp}=${_v}"
!macroend
!macro _UAC.Dump _f _fp _v
!insertmacro _UAC.DumpEx `${_f}` `${_f}` `${_fp}` `${_v}`
!macroend
!macro _UAC.DbgDetailPrint
push $0
push $1
System::Call /NoUnload "advapi32::GetUserName(t.r0,*i${NSIS_MAX_STRLEN})"
System::Call "Kernel32::GetComputerName(t.r1,*i${NSIS_MAX_STRLEN})"
DetailPrint "$1\$0"
;!insertmacro _UAC.DumpEx "User" System::Call "advapi32::GetUserName(t.r0,*i${NSIS_MAX_STRLEN})" $0
!insertmacro _UAC.DumpEx "CmdLine" "" "" "$CmdLine"
!insertmacro _UAC.Dump UAC::IsAdmin "" $0
!insertmacro _UAC.Dump UAC::SupportsUAC "" $0
!insertmacro _UAC.Dump UAC::GetElevationType "" $0
pop $1
pop $0
!macroend
!endif /* ifndef UAC_HDR__INC */

View File

@@ -1,62 +0,0 @@
RequestExecutionLevel user /* RequestExecutionLevel REQUIRED! */
!define APPNAME "UAC_AdminOnly"
Name "${APPNAME}"
OutFile "${APPNAME}.exe"
ShowInstDetails show
!include UAC.nsh ;<<< New headerfile that does everything for you ;)
!include LogicLib.nsh
!define UACSTR.I.ElvAbortReqAdmin "This fancy app requires admin rights fool" ;custom error string, see _UAC.InitStrings macro in uac.nsh for more
Function .OnInit
${UAC.I.Elevate.AdminOnly}
FunctionEnd
Function .OnInstFailed
${UAC.Unload}
FunctionEnd
Function .OnInstSuccess
${UAC.Unload}
FunctionEnd
Function ExecCodeSegmentTest
${If} "$1" != "666, the # of the beast"
MessageBox mb_ok "uh oh"
${EndIf}
FunctionEnd
Section "Info"
!insertmacro _UAC.DbgDetailPrint
StrCpy $1 "666, the # of the beast"
!insertmacro UAC.CallFunctionAsUser ExecCodeSegmentTest
SectionEnd
page InstFiles
/* LEGACY CODE: (now uses magic code from UAC.nsh)
Function .OnInit
UAC_Elevate:
UAC::RunElevated
StrCmp 1223 $0 UAC_ElevationAborted ; UAC dialog aborted by user?
StrCmp 0 $0 0 UAC_Err ; Error?
StrCmp 1 $1 0 UAC_Success ;Are we the real deal or just the wrapper?
Quit
UAC_Err:
MessageBox mb_iconstop "Unable to elevate , error $0"
Abort
UAC_ElevationAborted:
/*System::Call "user32::CreateWindowEx(i ${WS_EX_TRANSPARENT}|${WS_EX_LAYERED}, t 'Button', t 'blah', i 0, i 10, i 10, i 10, i 10, i 0, i 0, i 0) i .r0"
ShowWindow $0 ${SW_SHOW}
System::Call "user32::SetForegroundWindow(i r0) i."
System::Call "user32::DestroyWindow(i r0) i."
* /
MessageBox mb_iconstop "This installer requires admin access, aborting!"
Abort
UAC_Success:
StrCmp 1 $3 +4 ;Admin?
StrCmp 3 $1 0 UAC_ElevationAborted ;Try again or abort?
MessageBox mb_iconstop "This installer requires admin access, try again" ;Inform user...
goto UAC_Elevate ;... and try again
FunctionEnd*/

View File

@@ -1,45 +0,0 @@
/*
This sample will try to elevate, but it will also allow non admin users to continue if they click cancel in the elevation dialog
*/
RequestExecutionLevel user /* RequestExecutionLevel REQUIRED! */
!define APPNAME "UAC_AllowLUA"
Name "${APPNAME}"
OutFile "${APPNAME}.exe"
ShowInstDetails show
!include UAC.nsh
Function .OnInstFailed
UAC::Unload ;Must call unload!
FunctionEnd
Function .OnInstSuccess
UAC::Unload ;Must call unload!
FunctionEnd
Function .OnInit
UAC::RunElevated
;MessageBox mb_iconinformation "Debug: UAC::RunElevated: $\n0(Error)=$0 $\n1(UACMode)=$1 $\n2=$2 $\nadmin=$3$\n$\n$CmdLine"
StrCmp 1223 $0 UAC_ElevationAborted ; UAC dialog aborted by user?
StrCmp 0 $0 0 UAC_Err ; Error?
StrCmp 1 $1 0 UAC_Success ;Are we the real deal or just the wrapper?
Quit
UAC_Err:
MessageBox mb_iconstop "Unable to elevate , error $0"
Abort
UAC_ElevationAborted:
# elevation was aborted, we still run as normal
UAC_Success:
FunctionEnd
Section "Info"
!insertmacro _UAC.DbgDetailPrint
SectionEnd
Page InstFiles

View File

@@ -1,30 +0,0 @@
RequestExecutionLevel user /* RequestExecutionLevel REQUIRED! */
!define APPNAME "UAC_GetUserShellFolderPath"
Name "${APPNAME}"
OutFile "${APPNAME}.exe"
ShowInstDetails show
!include UAC.nsh
!include LogicLib.nsh
page instfiles
Function .onInit
${UAC.I.Elevate.AdminOnly}
FunctionEnd
!ifndef CSIDL_PERSONAL
!define CSIDL_PERSONAL 0x0005 ;My Documents
!endif
Section
/*
You can specify a fallback value in the 2nd parameter, it is used if the installer is not elevated
or running on NT4/Win9x or on errors.
If you just want to check for success, use "" as the 2nd parameter and compare $0 with ""
*/
UAC::GetShellFolderPath ${CSIDL_PERSONAL} $Documents
DetailPrint MyDocs=$0
SectionEnd

View File

@@ -1,235 +0,0 @@
/*
This sample supports two modes, installing as a normal user (single user install) AND as admin (all users install)
This sample uses the registry plugin, so you need to download that if you don't already have it
*/
!define APPNAME "UAC_RealWorldFullyLoadedDualMode"
!define ELEVATIONTITLE "${APPNAME}: Elevate" ;displayed during elevation on our custom page
!define UNINSTALLER_NAME "Uninstall ${APPNAME}.exe"
!define UNINSTALLER_REGSECTION "${APPNAME}"
!define RegPath.MSUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall"
Name "${APPNAME}"
OutFile "${APPNAME}.exe"
ShowInstDetails show
SetCompressor LZMA
RequestExecutionLevel user /* RequestExecutionLevel REQUIRED! */
!include MUI.nsh
!include UAC.nsh
!include LogicLib.nsh
!include Registry.nsh
!include nsDialogs.nsh ;for our custom page
!include FileFunc.nsh ;we need to parse the command line
!insertmacro GetParameters
!insertmacro GetOptions
!define MUI_CUSTOMFUNCTION_ABORT onAbort
!define MUI_CUSTOMFUNCTION_GUIINIT onGuiInit
!define MUI_COMPONENTSPAGE_NODESC
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
!define MUI_WELCOMEPAGE_TITLE_3LINES
var InstMode # 0: Single user, 1:All users, >1:elevated instance, perform page jump
var hKey # Reg hive
var hSelModeAdminRadio
var StartMenuFolder
!macro SetMode IsAdmin
!if "${IsAdmin}" > 0
SetShellVarContext all
StrCpy $InstMode 1
StrCpy $hKey HKLM
!else
SetShellVarContext current
StrCpy $InstMode 0
StrCpy $hKey HKCU
!endif
!macroend
Function .OnInit
!insertmacro SetMode 0
${GetParameters} $R9
${GetOptions} "$R9" UAC $0 ;look for special /UAC:???? parameter (sort of undocumented)
${Unless} ${Errors}
UAC::IsAdmin
${If} $0 < 1
SetErrorLevel 666 ;special return value for outer instance so it knows we did not have admin rights
Quit
${EndIf}
!insertmacro SetMode 1
StrCpy $InstMode 2
${EndIf}
FunctionEnd
Function onGuiInit
${If} $InstMode >= 2
${UAC.GetOuterInstanceHwndParent} $0
${If} $0 <> 0
System::Call /NOUNLOAD "*(i,i,i,i)i.r1"
System::Call /NOUNLOAD 'user32::GetWindowRect(i $0,i r1)i.r2'
${If} $2 <> 0
System::Call /NOUNLOAD "*$1(i.r2,i.r3)"
System::Call /NOUNLOAD 'user32::SetWindowPos(i $hwndParent,i0,ir2,ir3,i0,i0,i 4|1)'
${EndIf}
ShowWindow $hwndParent ${SW_SHOW}
ShowWindow $0 ${SW_HIDE} ;hide outer instance installer window
System::Free $1
${EndIf}
${EndIf}
FunctionEnd
Function Un.OnInit
!insertmacro SetMode 0
ReadRegDWORD $0 HKLM "${RegPath.MSUninstall}\${UNINSTALLER_REGSECTION}" InstMode ;We saved the "mode" in the installer
${If} $0 U> 0
; If it was installed for all users, we have to be admin to uninstall it
${UAC.U.Elevate.AdminOnly} "${UNINSTALLER_NAME}"
!insertmacro SetMode 1
${EndIf}
FunctionEnd
Function onAbort
${UAC.Unload}
FunctionEnd
${UAC.AutoCodeUnload} 1 ;Auto-generate .OnInstFailed and .OnInstSuccess functions
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipPageInElvModePreCB
!insertmacro MUI_PAGE_WELCOME
Page Custom ModeSelectionPageCreate ModeSelectionPageLeave
!define MUI_PAGE_CUSTOMFUNCTION_PRE CmpntsPreCB
!insertmacro MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_PRE DirPreCB
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU 1 $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION FinishRunCB
!insertmacro MUI_PAGE_FINISH
!define MUI_WELCOMEPAGE_TITLE_3LINES
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Function CmpntsPreCB
GetDlgItem $0 $hwndparent 3
${IfThen} $InstMode >= 1 ${|} EnableWindow $0 0 ${|} ;prevent user from going back and selecting single user so noobs don't end up installing as the wrong user
FunctionEnd
Function SkipPageInElvModePreCB
${IfThen} $InstMode > 1 ${|} Abort ${|} ;skip this page so we get to the mode selection page
FunctionEnd
Function ModeSelectionPageCreate
${If} $InstMode > 1
StrCpy $InstMode 1
Abort ;skip this page and contine where the "parent" would have gone
${EndIf}
!insertmacro MUI_HEADER_TEXT_PAGE "Select install type" "Blah blah blah blah"
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${NSD_CreateLabel} 0 20u 75% 20u "Blah blah blah blah select install type..."
Pop $0
System::Call "advapi32::GetUserName(t.r0, *i ${NSIS_MAX_STRLEN}r1) i.r2"
${NSD_CreateRadioButton} 0 40u 75% 15u "Single User ($0)"
Pop $0
${IfThen} $InstMode U< 1 ${|} SendMessage $0 ${BM_SETCHECK} 1 0 ${|}
${NSD_CreateRadioButton} 0 60u 75% 15u "All users"
Pop $hSelModeAdminRadio
${IfThen} $InstMode U> 0 ${|} SendMessage $hSelModeAdminRadio ${BM_SETCHECK} 1 0 ${|}
nsDialogs::Show
FunctionEnd
!macro EnableCtrl dlg id state
push $language
GetDlgItem $language ${dlg} ${id}
EnableWindow $language ${state}
pop $language
!macroend
Function ModeSelectionPageLeave
SendMessage $hSelModeAdminRadio ${BM_GETCHECK} 0 0 $9
UAC::IsAdmin
${If} $9 U> 0
${If} $0 <> 0
!insertmacro SetMode 1
${Else}
System::Call /NoUnload 'user32::GetWindowText(i $HwndParent,t.R1,i ${NSIS_MAX_STRLEN})' ;get original window title
System::Call /NoUnload 'user32::SetWindowText(i $HwndParent,t "${ELEVATIONTITLE}")' ;set out special title
StrCpy $2 "" ;reset special return, only gets set when sub process is executed, not when user cancels
!insertmacro EnableCtrl $HWNDParent 1 0 ;Disable next button, just because it looks good ;)
${UAC.RunElevatedAndProcessMessages}
!insertmacro EnableCtrl $HWNDParent 1 1
System::Call 'user32::SetWindowText(i $HwndParent,t "$R1")' ;restore title
${If} $2 = 666 ;our special return, the new process was not admin after all
MessageBox mb_iconExclamation "You need to login with an account that is a member of the admin group to continue..."
Abort
${ElseIf} $0 = 1223 ;cancel
Abort
${Else}
${If} $0 <> 0
${If} $0 = 1062
MessageBox mb_iconstop "Unable to elevate, Secondary Logon service not running!"
${Else}
MessageBox mb_iconstop "Unable to elevate, error $0 ($1,$2,$3)"
${EndIf}
Abort
${EndIf}
${EndIf}
Quit ;We now have a new process, the install will continue there, we have nothing left to do here
${EndIf}
${EndIf}
FunctionEnd
Function DirPreCB
${If} $InstDir == ""
${If} $InstMode U> 0
StrCpy $InstDir "$ProgramFiles\${APPNAME}"
${Else}
StrCpy $InstDir "$APPDATA\${APPNAME}"
${EndIf}
${EndIf}
FunctionEnd
Function FinishRunCB
UAC::Exec "" "Notepad.exe" "$Windir\Win.INI" "$InstDir"
FunctionEnd
Function CreateSMShortcuts
CreateShortcut "$SMPrograms\${APPNAME}.lnk" "$Windir\Notepad.exe"
FunctionEnd
Function CreateDeskShortcuts
CreateShortcut "$Desktop\${APPNAME}.lnk" "$Windir\Notepad.exe"
FunctionEnd
Section "!Required files"
SectionIn RO
SetOutPath -
!insertmacro _UAC.DbgDetailPrint ;some debug info, useful during testing
;Install files here...
WriteUninstaller "$InstDir\${UNINSTALLER_NAME}"
${registry::Write} "$hKey\${RegPath.MSUninstall}\${UNINSTALLER_REGSECTION}" DisplayName "${APPNAME}" REG_SZ $0
${registry::Write} "$hKey\${RegPath.MSUninstall}\${UNINSTALLER_REGSECTION}" UninstallString "$InstDir\${UNINSTALLER_NAME}" REG_SZ $0
${registry::Write} "$hKey\${RegPath.MSUninstall}\${UNINSTALLER_REGSECTION}" InstMode $InstMode REG_DWORD $0
${registry::Unload}
SectionEnd
Section "Startmenu Shortcuts"
${UAC.CallFunctionAsUser} CreateSMShortcuts
SectionEnd
Section "Desktop Shortcut"
${UAC.CallFunctionAsUser} CreateDeskShortcuts
SectionEnd
Section Uninstall
Delete "$InstDir\${UNINSTALLER_NAME}"
Delete "$SMPrograms\${APPNAME}.lnk"
Delete "$Desktop\${APPNAME}.lnk"
RMDir "$InstDir"
${registry::DeleteKey} "$hKey\${RegPath.MSUninstall}\${UNINSTALLER_REGSECTION}" $0
${registry::Unload}
SectionEnd

View File

@@ -1,49 +0,0 @@
/*
This script was made in response to http://forums.winamp.com/showthread.php?threadid=280330
It is a ugly hack and is mostly here just to have a solution right now.
Hopefully, NSIS will add support for changing the RequestExecutionLevel of the uninstaller
This code inspired the _UAC.GenerateUninstallerTango macro (called by ${UAC.U.Elevate.AdminOnly} unless you define UAC_DISABLEUNINSTALLERTANGO)
*/
RequestExecutionLevel user /* RequestExecutionLevel REQUIRED! */
!define APPNAME "UAC_Uninstaller"
Name "${APPNAME}"
OutFile "${APPNAME}.exe"
ShowInstDetails show
!include LogicLib.nsh
!define UNINSTALLER_UACDATA "uac.ini"
!define UNINSTALLER_NAME "Uninstall FooBarBaz"
Function un.onInit
ReadIniStr $0 "$ExeDir\${UNINSTALLER_UACDATA}" UAC "Un.First"
${IF} $0 != 1
;SetSilent silent
InitPluginsDir
WriteIniStr "$PluginsDir\${UNINSTALLER_UACDATA}" UAC "Un.First" 1
CopyFiles /SILENT "$EXEPATH" "$PluginsDir\${UNINSTALLER_NAME}.exe"
StrCpy $0 ""
${IfThen} ${Silent} ${|} StrCpy $0 "/S " ${|}
ExecWait '"$PluginsDir\${UNINSTALLER_NAME}.exe" $0/NCRC _?=$INSTDIR' $0
SetErrorLevel $0
Quit
${EndIf}
# UAC code goes here ...
FunctionEnd
Section
WriteUninstaller "$exedir\${UNINSTALLER_NAME}.exe"
SetAutoClose true
DetailPrint "Uninstalling..."
Sleep 1111
Exec '"$exedir\${UNINSTALLER_NAME}.exe"'
SectionEnd
Section uninstall
MessageBox mb_ok "My filename is: $EXEFILE"
Delete "$instdir\${UNINSTALLER_NAME}.exe"
Delete "$instdir\${APPNAME}.exe" ;delete generated installer aswell, this is just a sample script
SectionEnd
page InstFiles

View File

@@ -1,24 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by resource.rc
//
#define IDD_MYRUNAS 101
#define IDC_RUNASCURR 1000
#define IDC_RUNASSPEC 1001
#define IDC_SHICON 1002
#define IDC_HELPTEXT 1003
#define IDC_USERNAME 1004
#define IDC_PASSWORD 1005
#define IDC_LBLUSER 1007
#define IDC_LBLPWD 1008
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1009
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -1,109 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include "uac.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_MYRUNAS DIALOG DISCARDABLE 0, 0, 250, 145
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_FIXEDSYS |
DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "&OK",IDOK,132,122,50,14
PUSHBUTTON "Ca&ncel",IDCANCEL,188,122,50,14
ICON "",IDC_SHICON,7,7,20,20
LTEXT "",IDC_HELPTEXT,34,7,204,35
CONTROL "",IDC_RUNASCURR,"Button",BS_AUTORADIOBUTTON,20,49,218,
10
CONTROL "",IDC_RUNASSPEC,"Button",BS_AUTORADIOBUTTON,20,65,218,
10
LTEXT "&User name:",IDC_LBLUSER,20,84,42,16
EDITTEXT IDC_USERNAME,63,83,175,14,ES_AUTOHSCROLL
LTEXT "&Password:",IDC_LBLPWD,20,102,42,20
EDITTEXT IDC_PASSWORD,63,100,175,14,ES_PASSWORD | ES_AUTOHSCROLL
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_MYRUNAS, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 238
TOPMARGIN, 7
BOTTOMMARGIN, 136
END
END
#endif // APSTUDIO_INVOKED
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"#include ""uac.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

File diff suppressed because it is too large Load Diff

View File

@@ -1,169 +0,0 @@
//Copyright (C) 2007 Anders Kjersem. Licensed under the zlib/libpng license, see License.txt for details.
#pragma once
/** /#define BUILD_DBGRELEASE // Include simple debug output in release version */
/** /#define BUILD_DBGSELECTELVMODE //Test MyRunAs*/
/** /#define UNICODE // Unicode build */
/**/#define FEAT_CUSTOMRUNASDLG // Include custom runas dialog */
/**/#define FEAT_CUSTOMRUNASDLG_TRANSLATE //*/
/**/#define FEAT_MSRUNASDLGMODHACK // Default to other user radio button */
#if !defined(APSTUDIO_INVOKED) && !defined(RC_INVOKED)
#if (defined(_MSC_VER) && !defined(_DEBUG))
#pragma comment(linker,"/opt:nowin98")
#pragma comment(linker,"/ignore:4078")
#pragma comment(linker,"/merge:.rdata=.text")
//#pragma intrinsic(memset) //http://www.codeguru.com/forum/showthread.php?t=371491&page=2&pp=15 | http://www.ddj.com/windows/184416623
#endif
#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#endif
#ifdef _UNICODE
#define TFUNCSUFFIX W
#else
#define TFUNCSUFFIX A
#endif
#define _PCJOIN(a,b) a##b
#define PCJOIN(a,b) _PCJOIN(a,b)
#define _WIN32_WINNT 0x0501
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <ShellAPI.h>
#include <TChar.h>
#include "NSISUtil.h"
#ifndef SEE_MASK_NOZONECHECKS
#define SEE_MASK_NOZONECHECKS 0x00800000
#endif
#define COUNTOF(___c) ( sizeof(___c)/sizeof(___c[0]) )
#ifndef ARRAYSIZE
#define ARRAYSIZE COUNTOF
#endif
#define FORCEINLINE __forceinline
#if _MSC_VER >= 1400
extern void* __cdecl memset(void*mem,int c,size_t len);
#endif
FORCEINLINE LRESULT MySndDlgItemMsg(HWND hDlg,int id,UINT Msg,WPARAM wp=0,LPARAM lp=0) {return SendMessage(GetDlgItem(hDlg,id),Msg,wp,lp);}
#ifndef UAC_NOCUSTOMIMPLEMENTATIONS
FORCEINLINE HANDLE WINAPI GetCurrentProcess(){return ((HANDLE)(-1));}
FORCEINLINE HANDLE WINAPI GetCurrentThread(){return ((HANDLE)(-2));}
#define MyTStrLen lstrlen
#undef lstrcpy
#define lstrcpy MyTStrCpy
FORCEINLINE LPTSTR MyTStrCpy(LPTSTR s1,LPCTSTR s2) {return PCJOIN(lstr,PCJOIN(cpyn,TFUNCSUFFIX))(s1,s2,0x7FFFFFFF);}
#undef lstrcat
#define lstrcat MyTStrCat
LPTSTR MyTStrCat(LPTSTR s1,LPCTSTR s2)
#ifdef UAC_INITIMPORTS
{return s1?MyTStrCpy(&s1[MyTStrLen(s1)],s2):NULL;}
#else
;
#endif //UAC_INITIMPORTS
#endif //UAC_NOCUSTOMIMPLEMENTATIONS
//DelayLoaded functions:
typedef BOOL (WINAPI*ALLOWSETFOREGROUNDWINDOW)(DWORD dwProcessId);
typedef BOOL (WINAPI*OPENPROCESSTOKEN)(HANDLE ProcessHandle,DWORD DesiredAccess,PHANDLE TokenHandle);
typedef BOOL (WINAPI*OPENTHREADTOKEN)(HANDLE ThreadHandle,DWORD DesiredAccess,BOOL OpenAsSelf,PHANDLE TokenHandle);
typedef BOOL (WINAPI*GETTOKENINFORMATION)(HANDLE hToken,TOKEN_INFORMATION_CLASS TokInfoClass,LPVOID TokInfo,DWORD TokInfoLenh,PDWORD RetLen);
typedef BOOL (WINAPI*ALLOCATEANDINITIALIZESID)(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,BYTE nSubAuthorityCount,DWORD sa0,DWORD sa1,DWORD sa2,DWORD sa3,DWORD sa4,DWORD sa5,DWORD sa6,DWORD sa7,PSID*pSid);
typedef PVOID (WINAPI*FREESID)(PSID pSid);
typedef BOOL (WINAPI*EQUALSID)(PSID pSid1,PSID pSid2);
typedef BOOL (WINAPI*CHECKTOKENMEMBERSHIP)(HANDLE TokenHandle,PSID SidToCheck,PBOOL IsMember);
#ifdef FEAT_CUSTOMRUNASDLG
typedef BOOL (WINAPI*GETUSERNAME)(LPTSTR lpBuffer,LPDWORD nSize);
typedef BOOL (WINAPI*CREATEPROCESSWITHLOGONW)(LPCWSTR lpUsername,LPCWSTR lpDomain,LPCWSTR lpPassword,DWORD dwLogonFlags,LPCWSTR lpApplicationName,LPWSTR lpCommandLine,DWORD dwCreationFlags,LPVOID pEnv,LPCWSTR WorkDir,LPSTARTUPINFOW pSI,LPPROCESS_INFORMATION pPI);
#define SECURITY_WIN32
#include <Security.h>//NameSamCompatible
typedef BOOLEAN (WINAPI*GETUSERNAMEEX)(EXTENDED_NAME_FORMAT NameFormat,LPTSTR lpNameBuffer,PULONG nSize);
#endif
#ifdef UAC_INITIMPORTS
ALLOWSETFOREGROUNDWINDOW _AllowSetForegroundWindow=0;
OPENPROCESSTOKEN _OpenProcessToken=0;
OPENTHREADTOKEN _OpenThreadToken=0;
GETTOKENINFORMATION _GetTokenInformation=0;
ALLOCATEANDINITIALIZESID _AllocateAndInitializeSid=0;
FREESID _FreeSid=0;
EQUALSID _EqualSid=0;
CHECKTOKENMEMBERSHIP _CheckTokenMembership=0;
#ifdef FEAT_CUSTOMRUNASDLG
GETUSERNAME _GetUserName=0;
GETUSERNAMEEX _GetUserNameEx=0;
CREATEPROCESSWITHLOGONW _CreateProcessWithLogonW=0;
#endif
#else
#ifdef FEAT_CUSTOMRUNASDLG
extern GETUSERNAME _GetUserName;
extern GETUSERNAMEEX _GetUserNameEx;
extern CREATEPROCESSWITHLOGONW _CreateProcessWithLogonW;
#endif
#endif /* UAC_INITIMPORTS */
extern DWORD DelayLoadDlls();
#ifdef FEAT_CUSTOMRUNASDLG
extern DWORD MyRunAs(HINSTANCE hInstDll,SHELLEXECUTEINFO&sei);
#endif
#if !defined(NTDDI_VISTA) || defined(BUILD_OLDSDK)
//#if !defined(NTDDI_VERSION) || (NTDDI_VERSION < 0x06000000) || !defined(NTDDI_VISTA)
//#if !defined(TOKEN_ELEVATION_TYPE) || defined(BUILD_OLDSDK)
enum TOKEN_ELEVATION_TYPE {
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited
};
enum _TOKEN_INFORMATION_CLASS___VISTA {
TokenElevationType = (TokenOrigin+1),
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
};
#endif
#if defined(_DEBUG) || defined(BUILD_DBGRELEASE)
//Simple debug helpers:
#define BUILD_DBG
/** /#define BUILD_XPTEST //Pretend UAC exists and "elevate" with NT runas */
#define DBG_RESETDBGVIEW() do{HWND hDbgView=FindWindowA("dbgviewClass",0);PostMessage(hDbgView,WM_COMMAND,40020,0);if(0)SetForegroundWindow(hDbgView);}while(0)
#define _pp_MakeStr_(x) #x
#define pp_MakeStr(x) _pp_MakeStr_(x)
#define TRACE OutputDebugStringA
#define DBGONLY(_x) _x
#ifndef ASSERT
#define ASSERT(_x) do{if(!(_x)){MessageBoxA(GetActiveWindow(),#_x##"\n\n"##__FILE__##":"## pp_MakeStr(__LINE__),"SimpleAssert",0);/*TRACE(#_x##"\n"##__FILE__##":" pp_MakeStr(__LINE__)"\n");*/}}while(0)
#endif
#define VERIFY(_x) ASSERT(_x)
static void TRACEF(const char*fmt,...) {va_list a;va_start(a,fmt);static TCHAR b[1024*4];if (sizeof(TCHAR)!=sizeof(char)){static TCHAR fmtBuf[COUNTOF(b)];VERIFY(wsprintf(fmtBuf,_T("%hs"),fmt)<COUNTOF(fmtBuf));fmt=(LPCSTR)fmtBuf;}wvsprintf(b,(TCHAR*)fmt,a);OutputDebugString(b);}
#else
#define TRACE /*(void)0*/
#define DBGONLY(_x)
#define ASSERT(_x)
#define VERIFY(_x) ((void)(_x))
#define TRACEF TRACE
#endif /* DEBUG */
#endif /* APSTUDIO_INVOKED */

2
binary

Submodule binary updated: 151fc83a05...01d73965dc

View File

@@ -1,19 +1,21 @@
<RCC>
<qresource prefix="/mirall">
<qresource prefix="/client">
<file>resources/dialog-close.png</file>
<file>resources/dialog-ok.png</file>
<file>resources/dialog-cancel.png</file>
<file>resources/folder-remote-32.png</file>
<file>resources/folder-remote.png</file>
<file>resources/folder-sync.png</file>
<file>resources/folder-grey.png</file>
<file>resources/folder-sync@2x.png</file>
<file>resources/task-ongoing.png</file>
<file>resources/view-refresh.png</file>
<file>resources/warning-16.png</file>
<file>resources/warning.png</file>
<file>resources/warning@2x.png</file>
<file>resources/settings.png</file>
<file>resources/activity.png</file>
<file>resources/network.png</file>
<file>resources/lock-http.png</file>
<file>resources/lock-https.png</file>
<file>resources/lock-http.png</file>
<file>resources/lock-http@2x.png</file>
<file>resources/lock-https.png</file>
<file>resources/lock-https@2x.png</file>
<file>resources/account.png</file>
</qresource>
</RCC>

View File

@@ -1,4 +1,4 @@
SET(WINDRES_EXECUTABLE ${CMAKE_RC_COMPILER})
SET(WINDRES_EXECUTABLE_BASE ${CMAKE_RC_COMPILER})
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
#
@@ -21,7 +21,7 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
else(NOT WINCE)
find_program(PNG2ICO_EXECUTABLE NAMES png2ico PATHS ${HOST_BINDIR} NO_DEFAULT_PATH )
endif(NOT WINCE)
find_program(WINDRES_EXECUTABLE NAMES windres)
find_program(WINDRES_EXECUTABLE NAMES ${WINDRES_EXECUTABLE_BASE})
if(MSVC)
set(WINDRES_EXECUTABLE TRUE)
endif(MSVC)

View File

@@ -9,7 +9,12 @@
# QTKEYCHAIN_LIBRARIES - The libraries needed to use QtKeychain
# QTKEYCHAIN_DEFINITIONS - Compiler switches required for using LibXml2
find_path(QTKEYCHAIN_INCLUDE_DIR qt5keychain/keychain.h)
find_path(QTKEYCHAIN_INCLUDE_DIR
NAMES
keychain.h
PATH_SUFFIXES
qt5keychain
)
find_library(QTKEYCHAIN_LIBRARY
NAMES

View File

@@ -9,7 +9,13 @@
# QTKEYCHAIN_LIBRARIES - The libraries needed to use QtKeychain
# QTKEYCHAIN_DEFINITIONS - Compiler switches required for using LibXml2
find_path(QTKEYCHAIN_INCLUDE_DIR qtkeychain/keychain.h)
find_path(QTKEYCHAIN_INCLUDE_DIR
NAMES
keychain.h
PATH_SUFFIXES
qtkeychain
)
find_library(QTKEYCHAIN_LIBRARY
NAMES

View File

@@ -40,7 +40,7 @@ set(__get_git_revision_description YES)
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
function(get_git_head_revision _refspecvar _hashvar)
set(GIT_PARENT_DIR "${CMAKE_SOURCE_DIR}")
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
@@ -53,6 +53,13 @@ function(get_git_head_revision _refspecvar _hashvar)
endif()
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
endwhile()
# check if this is a submodule
if(NOT IS_DIRECTORY ${GIT_DIR})
file(READ ${GIT_DIR} submodule)
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
endif()
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
if(NOT EXISTS "${GIT_DATA}")
file(MAKE_DIRECTORY "${GIT_DATA}")

View File

@@ -9,6 +9,8 @@
!define APPLICATION_LICENSE "@APPLICATION_LICENSE@"
!define WIN_SETUP_BITMAP_PATH "@WIN_SETUP_BITMAP_PATH@"
!define CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@"
;-----------------------------------------------------------------------------
; Some installer script options (comment-out options not required)
;-----------------------------------------------------------------------------
@@ -262,7 +264,7 @@ FunctionEnd
!macro ConfirmEndProcess processName
MessageBox MB_YESNO|MB_ICONEXCLAMATION \
$ConfirmEndProcess_MESSAGEBOX_TEXT \
IDYES process_${processName}_kill IDNO process_${processName}_ended
/SD IDYES IDYES process_${processName}_kill IDNO process_${processName}_ended
process_${processName}_kill:
DetailPrint $ConfirmEndProcess_KILLING_PROCESSES_TEXT
Processes::KillProcess ${processName}
@@ -383,21 +385,21 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
;Main executable & csync
File "${BUILD_PATH}\bin\${APPLICATION_EXECUTABLE}"
File "${BUILD_PATH}\bin\${APPLICATION_CMD_EXECUTABLE}"
File "${BUILD_PATH}\bin\socketapiclient.exe"
File "${BUILD_PATH}\src\lib${APPLICATION_SHORTNAME}sync.dll"
File "${BUILD_PATH}\csync\src\libocsync.dll"
File "${BUILD_PATH}\bin\lib${APPLICATION_SHORTNAME}sync.dll"
File "${BUILD_PATH}\bin\libocsync.dll"
File "${BUILD_PATH}\src\mirall_*.qm"
File "${BUILD_PATH}\src\gui\client*.qm"
; Make sure only to copy qt, not qt_help, etc
File "${MING_SHARE}\qt5\translations\qt_??.qm"
File "${MING_SHARE}\qt5\translations\qt_??_??.qm"
File "${MING_SHARE}\qt5\translations\qtbase_*.qm"
File "${MING_SHARE}\qt5\translations\qtkeychain_*.qm"
;Add crash reporter if it was built
File /nonfatal "${BUILD_PATH}/bin/${CRASHREPORTER_EXECUTABLE}.exe"
SetOutPath "$INSTDIR\platforms"
File "${PLATFORMS_DLL_PATH}\qwindows.dll"
SetOutPath "$INSTDIR\accessible"
File "${ACCESSIBLE_DLL_PATH}\qtaccessiblewidgets.dll"
SetOutPath "$INSTDIR\imageformats"
File "${IMAGEFORMATS_DLL_PATH}\qgif.dll"
File "${IMAGEFORMATS_DLL_PATH}\qjpeg.dll"
@@ -419,13 +421,17 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
File "${QT_DLL_PATH}\Qt5PrintSupport.dll"
File "${QT_DLL_PATH}\Qt5Qml.dll"
File "${QT_DLL_PATH}\Qt5Quick.dll"
File "${QT_DLL_PATH}\Qt5Sensors.dll"
File "${QT_DLL_PATH}\Qt5Sql.dll"
File "${QT_DLL_PATH}\Qt5WebKit.dll"
File "${QT_DLL_PATH}\Qt5WebKitWidgets.dll"
File "${QT_DLL_PATH}\Qt5Widgets.dll"
File "${QT_DLL_PATH}\Qt5Xml.dll"
;QtWebKit dependencies
File "${QT_DLL_PATH}\Qt5Multimedia.dll"
File "${QT_DLL_PATH}\Qt5MultimediaWidgets.dll"
File "${QT_DLL_PATH}\Qt5Sensors.dll"
;Qt deps
File "${MING_BIN}\libpng16-16.dll"
File "${MING_BIN}\icudata53.dll"
@@ -435,28 +441,19 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
File "${MING_BIN}\libGLESv2.dll"
File "${MING_BIN}\libjpeg-8.dll"
File "${MING_BIN}\libpcre16-0.dll"
File "${MING_BIN}\libproxy.dll"
File "${MING_BIN}\libsqlite3-0.dll"
File "${MING_BIN}\libcrypto-10.dll"
File "${MING_BIN}\libssl-10.dll"
File "${MING_BIN}\libstdc++-6.dll"
File "${MING_BIN}\libwebp-4.dll"
File "${MING_BIN}\libxslt-1.dll"
File "${MING_BIN}\libxml2-2.dll"
File "${MING_BIN}\zlib1.dll"
;QtSql and csync dep
File "${MING_BIN}\libsqlite3-0.dll"
;QtKeyChain stuff
File "${MING_BIN}\libqt5keychain.dll"
;ownCloud plugin
File "${MING_BIN}\libintl-8.dll"
File "${MING_BIN}\libneon-27.dll"
File "${MING_BIN}\libproxy.dll"
File "${MING_BIN}\libmodman.dll"
File "${MING_BIN}\libxml2-2.dll"
;MinGW stuff
File "${MING_BIN}\libgcc_s_sjlj-1.dll"
File "${MING_BIN}\libstdc++-6.dll"
@@ -476,15 +473,21 @@ SectionEnd
File "${BUILD_PATH}\vcredist_x64.exe"
Call InstallRedistributables
CreateDirectory "$INSTDIR\shellext"
!define LIBRARY_COM
!define LIBRARY_SHELL_EXTENSION
${If} ${RunningX64}
!define LIBRARY_X64
!insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCUtil_x64.dll" "$INSTDIR\shellext\OCUtil_x64.dll" "$INSTDIR\shellext"
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCOverlays_x64.dll" "$INSTDIR\shellext\OCOverlays_x64.dll" "$INSTDIR\shellext"
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCContextMenu_x64.dll" "$INSTDIR\shellext\OCContextMenu_x64.dll" "$INSTDIR\shellext"
!undef LIBRARY_X64
${Else}
!insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCUtil_x86.dll" "$INSTDIR\shellext\OCUtil_x86.dll" "$INSTDIR\shellext"
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCOverlays_x86.dll" "$INSTDIR\shellext\OCOverlays_x86.dll" "$INSTDIR\shellext"
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCContextMenu_x86.dll" "$INSTDIR\shellext\OCContextMenu_x86.dll" "$INSTDIR\shellext"
${Endif}
!undef LIBRARY_COM
!undef LIBRARY_SHELL_EXTENSION
${MementoSectionEnd}
!endif
@@ -508,7 +511,9 @@ SectionGroup $SectionGroup_Shortcuts
SetDetailsPrint textonly
DetailPrint $OPTION_SECTION_SC_DESKTOP_DetailPrint
SetDetailsPrint listonly
SetShellVarContext all
CreateShortCut "$DESKTOP\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}"
SetShellVarContext current
${MementoSectionEnd}
!endif
@@ -517,8 +522,10 @@ SectionGroup $SectionGroup_Shortcuts
SectionIn 1 2
SetDetailsPrint textonly
DetailPrint $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint
SetShellVarContext all
SetDetailsPrint listonly
CreateShortCut "$QUICKLAUNCH\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}"
SetShellVarContext current
${MementoSectionEnd}
!endif
@@ -640,15 +647,21 @@ Section Uninstall
!define LIBRARY_COM
!define LIBRARY_SHELL_EXTENSION
${If} ${HasSection} SEC_SHELL_EXT
DetailPrint "Uninstalling x64 overlay DLLs"
!define LIBRARY_X64
!insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR/shellext/OCUtil_x64.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR/shellext/OCOverlays_x64.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCContextMenu_x64.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCOverlays_x64.dll"
!insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCUtil_x64.dll"
!undef LIBRARY_X64
${Else}
!insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR/shellext/OCUtil_x86.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR/shellext/OCOverlays_x86.dll"
DetailPrint "Uninstalling x86 overlay DLLs"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCContextMenu_x86.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCOverlays_x86.dll"
!insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCUtil_x86.dll"
${EndIf}
!endif
!undef LIBRARY_COM
!undef LIBRARY_SHELL_EXTENSION
!endif
;Start menu shortcut
!ifdef OPTION_SECTION_SC_START_MENU
@@ -662,18 +675,22 @@ Section Uninstall
;Desktop shortcut.
!ifdef OPTION_SECTION_SC_DESKTOP
${If} ${HasSection} SEC_DESKTOP
SetShellVarContext all
${If} ${FileExists} "$DESKTOP\${APPLICATION_NAME}.lnk"
Delete "$DESKTOP\${APPLICATION_NAME}.lnk"
${EndIf}
SetShellVarContext current
${EndIf}
!endif
;Quick Launch shortcut.
!ifdef OPTION_SECTION_SC_QUICK_LAUNCH
${If} ${HasSection} SEC_QUICK_LAUNCH
SetShellVarContext all
${If} ${FileExists} "$QUICKLAUNCH\${APPLICATION_NAME}.lnk"
Delete "$QUICKLAUNCH\${APPLICATION_NAME}.lnk"
${EndIf}
SetShellVarContext current
${EndIf}
!endif

View File

@@ -8,7 +8,7 @@ include (MacroLogFeature)
option(BUILD_WITH_QT4 "Build with Qt4 no matter if Qt5 was found" OFF)
if( BUILD_WITH_QT4 )
message(STATUS "Search for Qt5 was disalbed by option BUILD_WITH_QT4")
message(STATUS "Search for Qt5 was disabled by option BUILD_WITH_QT4")
else( BUILD_WITH_QT4 )
find_package(Qt5Core QUIET)
endif( BUILD_WITH_QT4 )
@@ -70,10 +70,15 @@ endif()
qt5_add_resources(${ARGN})
endmacro()
if(NOT TOKEN_AUTH_ONLY)
find_package(Qt5LinguistTools REQUIRED)
macro(qt_add_translation)
qt5_add_translation(${ARGN})
endmacro()
else()
macro(qt_add_translation)
endmacro()
endif()
macro(qt_add_dbus_interface)
qt5_add_dbus_interface(${ARGN})
@@ -98,6 +103,9 @@ endif()
#Enable deprecated symbols
add_definitions("-DQT_DISABLE_DEPRECATED_BEFORE=0")
add_definitions("-DQT_USE_QSTRINGBUILDER") #optimize string concatenation
add_definitions("-DQT_MESSAGELOGCONTEXT") #enable function name and line number in debug output
endif( Qt5Core_FOUND )
if(NOT Qt5Core_FOUND)

View File

@@ -2,25 +2,21 @@
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
if(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wno-long-long")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
else(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
endif(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
endif(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_CXX_COMPILER MATCHES "clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
endif(CMAKE_CXX_COMPILER MATCHES "clang")
# TODO: handle msvc compilers warnings?
if(DEFINED MIRALL_FATAL_WARNINGS)
if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER MATCHES "clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
endif (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER MATCHES "clang")
# TODO: handle msvc compilers warnings?
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
endif(DEFINED MIRALL_FATAL_WARNINGS)

View File

@@ -3,6 +3,9 @@
#cmakedefine USE_INOTIFY 1
#cmakedefine WITH_QTKEYCHAIN 1
#cmakedefine WITH_CRASHREPORTER
#cmakedefine CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@"
#cmakedefine GIT_SHA1 "@GIT_SHA1@"
#cmakedefine APPLICATION_DOMAIN @APPLICATION_DOMAIN@

View File

@@ -28,10 +28,13 @@ if (NOT WIN32)
find_package(Iconv)
endif (NOT WIN32)
find_package(SQLite3 3.8.0 REQUIRED)
include(ConfigureChecks.cmake)
set(SOURCE_DIR ${CMAKE_SOURCE_DIR})
set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
include_directories(${CMAKE_CURRENT_BINARY_DIR})

View File

@@ -67,7 +67,7 @@ version 0.90.1 (released 2013-09-24, ownCloud Client 1.4.1)
* detect if server does not send an etag after an upload
completed.
* fix crash in case of network timeout, reported as
https://github.com/owncloud/mirall/issues/1010
https://github.comowncloud/client/issues/1010
* compile and cmake fixes for win32
* fixed behaviour of csync_exclude
* documentation and spelling fixes.

View File

@@ -1,7 +1,9 @@
project(libcsync)
add_subdirectory(std)
add_subdirectory(httpbf)
if(USE_NEON)
add_subdirectory(httpbf)
endif()
# Statically include sqlite
@@ -15,7 +17,6 @@ set(CSYNC_PUBLIC_INCLUDE_DIRS
set(CSYNC_PRIVATE_INCLUDE_DIRS
${SQLITE3_INCLUDE_DIRS}
${CSTDLIB_PUBLIC_INCLUDE_DIRS}
${HTTPBF_PUBLIC_INCLUDE_DIRS}
${CMAKE_BINARY_DIR}
)
@@ -28,8 +29,6 @@ set(CSYNC_LINK_LIBRARIES
${CSTDLIB_LIBRARY}
${CSYNC_REQUIRED_LIBRARIES}
${SQLITE3_LIBRARIES}
${NEON_LIBRARIES}
${HTTPBF_LIBRARY}
)
if(HAVE_ICONV AND WITH_ICONV)
@@ -60,20 +59,27 @@ set(csync_SRCS
vio/csync_vio.c
vio/csync_vio_file_stat.c
vio/csync_vio_local.c
csync_owncloud.c
csync_owncloud_recursive_propfind.c
csync_owncloud_util.c
)
if(USE_NEON)
list(APPEND csync_SRCS
csync_owncloud.c
csync_owncloud_util.c
)
list(APPEND CSYNC_LINK_LIBRARIES
${NEON_LIBRARIES}
)
include_directories(${NEON_INCLUDE_DIRS})
add_definitions(-DUSE_NEON)
endif(USE_NEON)
configure_file(csync_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/csync_version.h)
set(csync_HDRS
${CMAKE_CURRENT_BINARY_DIR}/csync_version.h
csync.h
vio/csync_vio.h
vio/csync_vio_file_stat.h
vio/csync_vio_handle.h
vio/csync_vio_method.h
vio/csync_vio_module.h
)
@@ -101,6 +107,8 @@ set_target_properties(
${LIBRARY_VERSION}
SOVERSION
${LIBRARY_SOVERSION}
RUNTIME_OUTPUT_DIRECTORY
${BIN_OUTPUT_DIRECTORY}
)
if(BUILD_OWNCLOUD_OSX_BUNDLE)
INSTALL(

View File

@@ -59,8 +59,10 @@
#include "c_jhash.h"
#ifdef USE_NEON
// Breaking the abstraction for fun and profit.
#include "csync_owncloud.h"
#endif
static int _key_cmp(const void *key, const void *data) {
uint64_t a;
@@ -109,27 +111,15 @@ int csync_create(CSYNC **csync, const char *local, const char *remote) {
while(len > 0 && local[len - 1] == '/') --len;
ctx->local.uri = c_strndup(local, len);
if (ctx->local.uri == NULL) {
ctx->status_code = CSYNC_STATUS_MEMORY_ERROR;
free(ctx);
return -1;
}
/* remove trailing slashes */
len = strlen(remote);
while(len > 0 && remote[len - 1] == '/') --len;
ctx->remote.uri = c_strndup(remote, len);
if (ctx->remote.uri == NULL) {
ctx->status_code = CSYNC_STATUS_MEMORY_ERROR;
free(ctx);
return -1;
}
ctx->status_code = CSYNC_STATUS_OK;
ctx->local.list = 0;
ctx->remote.list = 0;
ctx->current_fs = NULL;
ctx->abort = false;
@@ -162,7 +152,9 @@ int csync_init(CSYNC *ctx) {
ctx->local.type = LOCAL_REPLICA;
#ifdef USE_NEON
owncloud_init(ctx);
#endif
ctx->remote.type = REMOTE_REPLICA;
if (c_rbtree_create(&ctx->local.tree, _key_cmp, _data_cmp) < 0) {
@@ -177,6 +169,8 @@ int csync_init(CSYNC *ctx) {
goto out;
}
ctx->remote.root_perms = 0;
ctx->status = CSYNC_STATUS_INIT;
/* initialize random generator */
@@ -208,7 +202,6 @@ int csync_update(CSYNC *ctx) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "Journal: %s", ctx->statedb.file);
if (csync_statedb_load(ctx, ctx->statedb.file, &ctx->statedb.db) < 0) {
ctx->status_code = CSYNC_STATUS_STATEDB_LOAD_ERROR;
rc = -1;
return rc;
}
@@ -221,6 +214,14 @@ int csync_update(CSYNC *ctx) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "No exclude file loaded or defined!");
}
#ifdef USE_NEON
/* This is not actually connecting, just setting the info for neon. The legacy propagator can use it.. */
if (dav_connect( ctx, ctx->remote.uri ) < 0) {
ctx->status_code = CSYNC_STATUS_CONNECT_ERROR;
return -1;
}
#endif
/* update detection for local replica */
csync_gettime(&start);
ctx->current = LOCAL_REPLICA;
@@ -285,7 +286,6 @@ int csync_reconcile(CSYNC *ctx) {
csync_gettime(&start);
if (csync_statedb_load(ctx, ctx->statedb.file, &ctx->statedb.db) < 0) {
ctx->status_code = CSYNC_STATUS_STATEDB_LOAD_ERROR;
rc = -1;
return rc;
}
@@ -551,14 +551,10 @@ static void _csync_clean_ctx(CSYNC *ctx)
/* free memory */
c_rbtree_free(ctx->local.tree);
c_list_free(ctx->local.list);
c_rbtree_free(ctx->remote.tree);
c_list_free(ctx->remote.list);
ctx->remote.list = 0;
ctx->local.list = 0;
SAFE_FREE(ctx->statedb.file);
SAFE_FREE(ctx->remote.root_perms);
}
int csync_commit(CSYNC *ctx) {
@@ -577,13 +573,6 @@ int csync_commit(CSYNC *ctx) {
}
ctx->statedb.db = NULL;
rc = owncloud_commit(ctx);
if (rc < 0) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "commit failed: %s",
ctx->error_string ? ctx->error_string : "");
goto out;
}
_csync_clean_ctx(ctx);
ctx->remote.read_from_db = 0;
@@ -638,7 +627,9 @@ int csync_destroy(CSYNC *ctx) {
SAFE_FREE(ctx->remote.uri);
SAFE_FREE(ctx->error_string);
#ifdef USE_NEON
owncloud_destroy(ctx);
#endif
#ifdef WITH_ICONV
c_close_iconv();
@@ -649,15 +640,6 @@ int csync_destroy(CSYNC *ctx) {
return rc;
}
/* Check if csync is the required version or get the version string. */
const char *csync_version(int req_version) {
if (req_version <= LIBCSYNC_VERSION_INT) {
return CSYNC_STRINGIFY(LIBCSYNC_VERSION);
}
return NULL;
}
int csync_add_exclude_list(CSYNC *ctx, const char *path) {
if (ctx == NULL || path == NULL) {
return -1;
@@ -783,7 +765,12 @@ void csync_file_stat_free(csync_file_stat_t *st)
int csync_set_module_property(CSYNC* ctx, const char* key, void* value)
{
#ifdef USE_NEON
return owncloud_set_property(ctx, key, value);
#else
(void)ctx, (void)key, (void)value;
return 0;
#endif
}

View File

@@ -32,6 +32,8 @@
#ifndef _CSYNC_H
#define _CSYNC_H
#include "std/c_private.h"
#include <sys/stat.h>
#include <stdbool.h>
#include <stdint.h>
#include <unistd.h>
@@ -44,6 +46,11 @@
extern "C" {
#endif
struct csync_client_certs_s {
char *certificatePath;
char *certificatePasswd;
};
/**
* Instruction enum. In the file traversal structure, it describes
* the csync state of a file.
@@ -56,22 +63,22 @@ enum csync_status_codes_e {
CSYNC_STATUS_UNSUCCESSFUL,
CSYNC_STATUS_NO_LOCK, /* OBSOLETE does not happen anymore */
CSYNC_STATUS_STATEDB_LOAD_ERROR,
CSYNC_STATUS_STATEDB_WRITE_ERROR,
CSYNC_STATUS_STATEDB_CORRUPTED,
CSYNC_STATUS_NO_MODULE,
CSYNC_STATUS_TIMESKEW,
CSYNC_STATUS_FILESYSTEM_UNKNOWN,
CSYNC_STATUS_TIMESKEW, /* OBSOLETE */
CSYNC_STATUS_FILESYSTEM_UNKNOWN, /* UNUSED */
CSYNC_STATUS_TREE_ERROR,
CSYNC_STATUS_MEMORY_ERROR,
CSYNC_STATUS_PARAM_ERROR,
CSYNC_STATUS_UPDATE_ERROR,
CSYNC_STATUS_RECONCILE_ERROR,
CSYNC_STATUS_PROPAGATE_ERROR,
CSYNC_STATUS_REMOTE_ACCESS_ERROR,
CSYNC_STATUS_REMOTE_CREATE_ERROR,
CSYNC_STATUS_REMOTE_STAT_ERROR,
CSYNC_STATUS_LOCAL_CREATE_ERROR,
CSYNC_STATUS_LOCAL_STAT_ERROR,
CSYNC_STATUS_PROXY_ERROR,
CSYNC_STATUS_PROPAGATE_ERROR, /* OBSOLETE */
CSYNC_STATUS_REMOTE_ACCESS_ERROR, /* UNUSED */
CSYNC_STATUS_REMOTE_CREATE_ERROR, /* UNUSED */
CSYNC_STATUS_REMOTE_STAT_ERROR, /* UNUSED */
CSYNC_STATUS_LOCAL_CREATE_ERROR, /* UNUSED */
CSYNC_STATUS_LOCAL_STAT_ERROR, /* UNUSED */
CSYNC_STATUS_PROXY_ERROR, /* UNUSED */
CSYNC_STATUS_LOOKUP_ERROR,
CSYNC_STATUS_SERVER_AUTH_ERROR,
CSYNC_STATUS_PROXY_AUTH_ERROR,
@@ -82,8 +89,9 @@ enum csync_status_codes_e {
CSYNC_STATUS_NOT_FOUND,
CSYNC_STATUS_FILE_EXISTS,
CSYNC_STATUS_OUT_OF_SPACE,
CSYNC_STATUS_QUOTA_EXCEEDED,
CSYNC_STATUS_QUOTA_EXCEEDED, /* UNUSED */
CSYNC_STATUS_SERVICE_UNAVAILABLE,
CSYNC_STATUS_STORAGE_UNAVAILABLE,
CSYNC_STATUS_FILE_SIZE_ERROR,
CSYNC_STATUS_CONTEXT_LOST,
CSYNC_STATUS_MERGE_FILETREE_ERROR,
@@ -97,6 +105,7 @@ enum csync_status_codes_e {
CSYNC_STATUS_INDIVIDUAL_IS_HARDLINK,
CSYNC_STATUS_INDIVIDUAL_IGNORE_LIST,
CSYNC_STATUS_INDIVIDUAL_IS_INVALID_CHARS,
CSYNC_STATUS_INDIVIDUAL_EXCLUDE_LONG_FILENAME,
CYSNC_STATUS_FILE_LOCKED_OR_OPEN
};
@@ -136,6 +145,94 @@ enum csync_ftw_type_e {
};
#define FILE_ID_BUF_SIZE 21
// currently specified at https://github.com/owncloud/core/issues/8322 are 9 to 10
#define REMOTE_PERM_BUF_SIZE 15
typedef struct csync_vio_file_stat_s csync_vio_file_stat_t;
enum csync_vio_file_flags_e {
CSYNC_VIO_FILE_FLAGS_NONE = 0,
CSYNC_VIO_FILE_FLAGS_SYMLINK = 1 << 0,
CSYNC_VIO_FILE_FLAGS_HIDDEN = 1 << 1
};
enum csync_vio_file_type_e {
CSYNC_VIO_FILE_TYPE_UNKNOWN,
CSYNC_VIO_FILE_TYPE_REGULAR,
CSYNC_VIO_FILE_TYPE_DIRECTORY,
CSYNC_VIO_FILE_TYPE_FIFO,
CSYNC_VIO_FILE_TYPE_SOCKET,
CSYNC_VIO_FILE_TYPE_CHARACTER_DEVICE,
CSYNC_VIO_FILE_TYPE_BLOCK_DEVICE,
CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK
};
enum csync_vio_file_stat_fields_e {
CSYNC_VIO_FILE_STAT_FIELDS_NONE = 0,
CSYNC_VIO_FILE_STAT_FIELDS_TYPE = 1 << 0,
CSYNC_VIO_FILE_STAT_FIELDS_MODE = 1 << 1, // local POSIX mode
CSYNC_VIO_FILE_STAT_FIELDS_FLAGS = 1 << 2,
CSYNC_VIO_FILE_STAT_FIELDS_DEVICE = 1 << 3,
CSYNC_VIO_FILE_STAT_FIELDS_INODE = 1 << 4,
CSYNC_VIO_FILE_STAT_FIELDS_LINK_COUNT = 1 << 5,
CSYNC_VIO_FILE_STAT_FIELDS_SIZE = 1 << 6,
// CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_COUNT = 1 << 7, /* will be removed */
// CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_SIZE = 1 << 8, /* will be removed */
CSYNC_VIO_FILE_STAT_FIELDS_ATIME = 1 << 9,
CSYNC_VIO_FILE_STAT_FIELDS_MTIME = 1 << 10,
CSYNC_VIO_FILE_STAT_FIELDS_CTIME = 1 << 11,
// CSYNC_VIO_FILE_STAT_FIELDS_SYMLINK_NAME = 1 << 12,
// CSYNC_VIO_FILE_STAT_FIELDS_CHECKSUM = 1 << 13,
// CSYNC_VIO_FILE_STAT_FIELDS_ACL = 1 << 14,
// CSYNC_VIO_FILE_STAT_FIELDS_UID = 1 << 15,
// CSYNC_VIO_FILE_STAT_FIELDS_GID = 1 << 16,
CSYNC_VIO_FILE_STAT_FIELDS_ETAG = 1 << 17,
CSYNC_VIO_FILE_STAT_FIELDS_FILE_ID = 1 << 18,
CSYNC_VIO_FILE_STAT_FIELDS_DIRECTDOWNLOADURL = 1 << 19,
CSYNC_VIO_FILE_STAT_FIELDS_DIRECTDOWNLOADCOOKIES = 1 << 20,
CSYNC_VIO_FILE_STAT_FIELDS_PERM = 1 << 21 // remote oC perm
};
struct csync_vio_file_stat_s {
char *name;
char *etag; // FIXME: Should this be inlined like file_id and perm?
char file_id[FILE_ID_BUF_SIZE+1];
char *directDownloadUrl;
char *directDownloadCookies;
char remotePerm[REMOTE_PERM_BUF_SIZE+1];
time_t atime;
time_t mtime;
time_t ctime;
int64_t size;
mode_t mode;
dev_t device;
uint64_t inode;
nlink_t nlink;
int fields; // actually enum csync_vio_file_stat_fields_e fields;
enum csync_vio_file_type_e type;
enum csync_vio_file_flags_e flags;
};
csync_vio_file_stat_t *csync_vio_file_stat_new(void);
csync_vio_file_stat_t *csync_vio_file_stat_copy(csync_vio_file_stat_t *file_stat);
void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
void csync_vio_file_stat_set_file_id( csync_vio_file_stat_t* dst, const char* src );
void csync_vio_set_file_id(char* dst, const char *src );
/**
* CSync File Traversal structure.
*
@@ -191,6 +288,16 @@ typedef void (*csync_update_callback) (bool local,
const char *dirUrl,
void *userdata);
typedef void csync_vio_handle_t;
typedef csync_vio_handle_t* (*csync_vio_opendir_hook) (const char *url,
void *userdata);
typedef csync_vio_file_stat_t* (*csync_vio_readdir_hook) (csync_vio_handle_t *dhhandle,
void *userdata);
typedef void (*csync_vio_closedir_hook) (csync_vio_handle_t *dhhandle,
void *userdata);
typedef int (*csync_vio_stat_hook) (csync_vio_handle_t *dhhandle,
void *userdata);
/**
* @brief Allocate a csync context.
*
@@ -230,16 +337,7 @@ int csync_update(CSYNC *ctx);
int csync_reconcile(CSYNC *ctx);
/**
* @brief Propagation
*
* @param ctx The context to run the propagation on.
*
* @return 0 on success, less than 0 if an error occured.
*/
int csync_propagate(CSYNC *ctx);
/**
* @brief Commit the sync results to journal
* @brief Re-initializes the csync context
*
* @param ctx The context to commit.
*
@@ -258,31 +356,6 @@ int csync_commit(CSYNC *ctx);
*/
int csync_destroy(CSYNC *ctx);
/**
* @brief Check if csync is the required version or get the version
* string.
*
* @param req_version The version required.
*
* @return If the version of csync is newer than the version
* required it will return a version string.
* NULL if the version is older.
*
* Example:
*
* @code
* if (csync_version(CSYNC_VERSION_INT(0,42,1)) == NULL) {
* fprintf(stderr, "libcsync version is too old!\n");
* exit(1);
* }
*
* if (debug) {
* printf("csync %s\n", csync_version(0));
* }
* @endcode
*/
const char *csync_version(int req_version);
/**
* @brief Add an additional exclude list.
*
@@ -482,6 +555,9 @@ int csync_abort_requested(CSYNC *ctx);
*/
int csync_set_read_from_db(CSYNC* ctx, int enabled);
char *csync_normalize_etag(const char *);
time_t oc_httpdate_parse( const char *date );
#ifdef __cplusplus
}
#endif

View File

@@ -103,11 +103,6 @@ int csync_exclude_load(const char *fname, c_strlist_t **list) {
goto out;
}
buf = c_malloc(size + 1);
if (buf == NULL) {
rc = -1;
goto out;
}
if (read(fd, buf, size) != size) {
rc = -1;
goto out;
@@ -236,6 +231,14 @@ CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path
goto out;
}
// check the strlen and ignore the file if its name is longer than 254 chars.
if (strlen(bname) > 254) {
match = CSYNC_FILE_EXCLUDE_LONG_FILENAME;
SAFE_FREE(bname);
SAFE_FREE(dname);
goto out;
}
#ifdef _WIN32
// Windows cannot sync files ending in spaces (#2176). It also cannot
// distinguish files ending in '.' from files without an ending,

View File

@@ -26,7 +26,8 @@ enum csync_exclude_type_e {
CSYNC_FILE_SILENTLY_EXCLUDED,
CSYNC_FILE_EXCLUDE_AND_REMOVE,
CSYNC_FILE_EXCLUDE_LIST,
CSYNC_FILE_EXCLUDE_INVALID_CHAR
CSYNC_FILE_EXCLUDE_INVALID_CHAR,
CSYNC_FILE_EXCLUDE_LONG_FILENAME
};
typedef enum csync_exclude_type_e CSYNC_EXCLUDE_TYPE;

View File

@@ -42,11 +42,10 @@
#define ERRNO_RETRY CSYNC_CUSTOM_ERRNO_BASE+9
#define ERRNO_REDIRECT CSYNC_CUSTOM_ERRNO_BASE+10
#define ERRNO_WRONG_CONTENT CSYNC_CUSTOM_ERRNO_BASE+11
#define ERRNO_TIMEDELTA CSYNC_CUSTOM_ERRNO_BASE+12
#define ERRNO_ERROR_STRING CSYNC_CUSTOM_ERRNO_BASE+13
#define ERRNO_SERVICE_UNAVAILABLE CSYNC_CUSTOM_ERRNO_BASE+14
#define ERRNO_QUOTA_EXCEEDED CSYNC_CUSTOM_ERRNO_BASE+15
#define ERRNO_USER_ABORT CSYNC_CUSTOM_ERRNO_BASE+16
#define ERRNO_STORAGE_UNAVAILABLE CSYNC_CUSTOM_ERRNO_BASE+17
#endif /* _CSYNC_MACROS_H */
/* vim: set ft=c.doxygen ts=8 sw=2 et cindent: */

View File

@@ -105,12 +105,12 @@ CSYNC_STATUS csync_errno_to_status(int error, CSYNC_STATUS default_status)
case ERRNO_TIMEOUT:
status = CSYNC_STATUS_TIMEOUT; /* Network: Timeout error */
break;
case ERRNO_QUOTA_EXCEEDED:
status = CSYNC_STATUS_QUOTA_EXCEEDED; /* Quota exceeded */
break;
case ERRNO_SERVICE_UNAVAILABLE:
status = CSYNC_STATUS_SERVICE_UNAVAILABLE; /* Service temporarily down */
break;
case ERRNO_STORAGE_UNAVAILABLE:
status = CSYNC_STATUS_STORAGE_UNAVAILABLE; /* Storage temporarily unavailable */
break;
case EFBIG:
status = CSYNC_STATUS_FILE_SIZE_ERROR; /* File larger than 2MB */
break;
@@ -121,9 +121,6 @@ CSYNC_STATUS csync_errno_to_status(int error, CSYNC_STATUS default_status)
status = CSYNC_STATUS_HTTP_ERROR;
break;
case ERRNO_TIMEDELTA:
status = CSYNC_STATUS_TIMESKEW;
break;
case EPERM: /* Operation not permitted */
case EACCES: /* Permission denied */
status = CSYNC_STATUS_PERMISSION_DENIED;
@@ -183,7 +180,7 @@ CSYNC_STATUS csync_errno_to_status(int error, CSYNC_STATUS default_status)
}
/* Remove possible quotes, and also the -gzip at the end
* Remove "-gzip" at the end (cf. https://github.com/owncloud/mirall/issues/1195)
* Remove "-gzip" at the end (cf. https://github.comowncloud/client/issues/1195)
* The caller must take ownership of the resulting string.
*/
char *csync_normalize_etag(const char *etag)

View File

@@ -47,6 +47,4 @@ int csync_fnmatch(__const char *__pattern, __const char *__name, int __flags);
*/
CSYNC_STATUS csync_errno_to_status(int error, CSYNC_STATUS default_status);
char *csync_normalize_etag(const char *);
#endif /* _CSYNC_MISC_H */

View File

@@ -213,8 +213,8 @@ static int configureProxy( csync_owncloud_ctx_t *ctx, ne_session *session )
re = 2;
} else {
DEBUG_WEBDAV("%s requested but no proxy host defined.", ctx->dav_session.proxy_type );
/* we used to try ne_system_session_proxy here, but we should rather err out
to behave exactly like the caller. */
/* we used to try ne_system_session_proxy here, but we should rather err out
to behave exactly like the caller. */
}
} else {
DEBUG_WEBDAV( "Unsupported Proxy: %s", ctx->dav_session.proxy_type );
@@ -374,7 +374,7 @@ static int post_send_hook(ne_request *req, void *userdata,
* This function sets the flag _connected if the connection is established
* and returns if the flag is set, so calling it frequently is save.
*/
static int dav_connect(csync_owncloud_ctx_t *ctx, const char *base_url) {
int dav_connect(CSYNC *csyncCtx, const char *base_url) {
int useSSL = 0;
int rc;
char protocol[6] = {'\0'};
@@ -384,6 +384,8 @@ static int dav_connect(csync_owncloud_ctx_t *ctx, const char *base_url) {
char *host = NULL;
unsigned int port = 0;
int proxystate = -1;
csync_owncloud_ctx_t *ctx = csyncCtx->owncloud_context;
struct csync_client_certs_s* clientCerts = csyncCtx->clientCerts;
if (ctx->_connected) {
return 0;
@@ -447,6 +449,29 @@ static int dav_connect(csync_owncloud_ctx_t *ctx, const char *base_url) {
goto out;
}
if(clientCerts != NULL) {
ne_ssl_client_cert *clicert;
DEBUG_WEBDAV("dav_connect: certificatePath and certificatePasswd are set, so we use it" );
DEBUG_WEBDAV(" with certificatePath: %s", clientCerts->certificatePath );
DEBUG_WEBDAV(" with certificatePasswd: %s", clientCerts->certificatePasswd );
clicert = ne_ssl_clicert_read ( clientCerts->certificatePath );
if ( clicert == NULL ) {
DEBUG_WEBDAV ( "Error read certificate : %s", ne_get_error ( ctx->dav_session.ctx ) );
} else {
if ( ne_ssl_clicert_encrypted ( clicert ) ) {
int rtn = ne_ssl_clicert_decrypt ( clicert, clientCerts->certificatePasswd );
if ( !rtn ) {
DEBUG_WEBDAV ( "Certificate was deciphered successfully." );
ne_ssl_set_clicert ( ctx->dav_session.ctx, clicert );
} else {
DEBUG_WEBDAV ( "Errors while deciphering certificate: %s", ne_get_error ( ctx->dav_session.ctx ) );
}
}
}
} else {
DEBUG_WEBDAV("dav_connect: error with csync_client_certs_s* clientCerts");
}
ne_ssl_trust_default_ca( ctx->dav_session.ctx );
ne_ssl_set_verify( ctx->dav_session.ctx, ssl_callback_by_neon, ctx);
}
@@ -477,267 +502,6 @@ out:
return rc;
}
/*
* result parsing list.
* This function is called to parse the result of the propfind request
* to list directories on the WebDAV server. I takes a single resource
* and fills a resource struct and stores it to the result list which
* is stored in the listdir_context.
*/
static void propfind_results_callback(void *userdata,
const ne_uri *uri,
const ne_prop_result_set *set)
{
struct listdir_context *fetchCtx = userdata;
struct resource *newres = 0;
const ne_status *status = NULL;
char *path = ne_path_unescape( uri->path );
(void) status;
if( ! fetchCtx->target ) {
DEBUG_WEBDAV("error: target must not be zero!" );
return;
}
/* Fill the resource structure with the data about the file */
newres = c_malloc(sizeof(struct resource));
newres->uri = path; /* no need to strdup because ne_path_unescape already allocates */
newres->name = c_basename( path );
fill_webdav_properties_into_resource(newres, set);
/* prepend the new resource to the result list */
newres->next = fetchCtx->list;
fetchCtx->list = newres;
fetchCtx->result_count = fetchCtx->result_count + 1;
/* DEBUG_WEBDAV( "results for URI %s: %d %d", newres->name, (int)newres->size, (int)newres->type ); */
}
/*
* fetches a resource list from the WebDAV server. This is equivalent to list dir.
*/
static struct listdir_context *fetch_resource_list(csync_owncloud_ctx_t *ctx, const char *uri, int depth)
{
struct listdir_context *fetchCtx;
int ret = 0;
ne_propfind_handler *hdl = NULL;
ne_request *request = NULL;
const char *content_type = NULL;
char *curi = NULL;
const ne_status *req_status = NULL;
curi = _cleanPath( uri );
/* The old legacy one-level PROPFIND cache. Also gets filled
by the recursive cache if 'infinity' did not suceed. */
if (ctx->propfind_cache) {
if (c_streq(curi, ctx->propfind_cache->target)) {
DEBUG_WEBDAV("fetch_resource_list Using simple PROPFIND cache %s", curi);
ctx->propfind_cache->ref++;
SAFE_FREE(curi);
return ctx->propfind_cache;
}
}
if( ctx->csync_ctx->callbacks.update_callback ) {
ctx->csync_ctx->callbacks.update_callback(false, curi,
ctx->csync_ctx->callbacks.update_callback_userdata);
}
fetchCtx = c_malloc( sizeof( struct listdir_context ));
if (!fetchCtx) {
errno = ENOMEM;
SAFE_FREE(curi);
return NULL;
}
fetchCtx->list = NULL;
fetchCtx->target = curi;
fetchCtx->currResource = NULL;
fetchCtx->ref = 1;
/* do a propfind request and parse the results in the results function, set as callback */
hdl = ne_propfind_create(ctx->dav_session.ctx, curi, depth);
if(hdl) {
ret = ne_propfind_named(hdl, ls_props, propfind_results_callback, fetchCtx);
request = ne_propfind_get_request( hdl );
req_status = ne_get_status( request );
}
if( ret == NE_OK ) {
fetchCtx->currResource = fetchCtx->list;
/* Check the request status. */
if( req_status && req_status->klass != 2 ) {
set_errno_from_http_errcode(req_status->code);
DEBUG_WEBDAV("ERROR: Request failed: status %d (%s)", req_status->code,
req_status->reason_phrase);
ret = NE_CONNECT;
set_error_message(ctx, req_status->reason_phrase);
}
DEBUG_WEBDAV("Simple propfind result code %d.", req_status ? req_status->code : -1);
} else {
if( ret == NE_ERROR && req_status->code == 404) {
errno = ENOENT;
} else {
set_errno_from_neon_errcode(ctx, ret);
}
}
if( ret == NE_OK ) {
/* Check the content type. If the server has a problem, ie. database is gone or such,
* the content type is not xml but a html error message. Stop on processing if it's
* not XML.
* FIXME: Generate user error message from the reply content.
*/
content_type = ne_get_response_header( request, "Content-Type" );
if( !(content_type && c_streq(content_type, "application/xml; charset=utf-8") ) ) {
DEBUG_WEBDAV("ERROR: Content type of propfind request not XML: %s.",
content_type ? content_type: "<empty>");
errno = ERRNO_WRONG_CONTENT;
set_error_message(ctx, "Server error: PROPFIND reply is not XML formatted!");
ret = NE_CONNECT;
}
}
if( ret != NE_OK ) {
const char *err = NULL;
set_errno_from_neon_errcode(ctx, ret);
err = ne_get_error( ctx->dav_session.ctx );
if(err) {
set_error_message(ctx, err);
}
DEBUG_WEBDAV("WRN: propfind named failed with %d, request error: %s", ret, err ? err : "<nil>");
}
if( hdl )
ne_propfind_destroy(hdl);
if( ret != NE_OK ) {
free_fetchCtx(fetchCtx);
return NULL;
}
free_fetchCtx(ctx->propfind_cache);
ctx->propfind_cache = fetchCtx;
ctx->propfind_cache->ref++;
return fetchCtx;
}
static struct listdir_context *fetch_resource_list_attempts(csync_owncloud_ctx_t *ctx, const char *uri, int depth)
{
int i;
struct listdir_context *fetchCtx = NULL;
for(i = 0; i < 10; ++i) {
fetchCtx = fetch_resource_list(ctx, uri, depth);
if(fetchCtx) break;
/* only loop in case the content is not XML formatted. Otherwise for every
* non successful stat (for non existing directories) its tried 10 times. */
if( errno != ERRNO_WRONG_CONTENT ) break;
DEBUG_WEBDAV("=> Errno after fetch resource list for %s: %d", uri, errno);
DEBUG_WEBDAV(" New attempt %i", i);
}
return fetchCtx;
}
/*
* directory functions
*/
csync_vio_handle_t *owncloud_opendir(CSYNC *ctx, const char *uri) {
struct listdir_context *fetchCtx = NULL;
char *curi = NULL;
DEBUG_WEBDAV("opendir method called on %s", uri );
if (dav_connect( ctx->owncloud_context, uri ) < 0) {
DEBUG_WEBDAV("connection failed");
return NULL;
}
curi = _cleanPath( uri );
if (ctx->owncloud_context->is_first_propfind && !ctx->owncloud_context->dav_session.no_recursive_propfind) {
ctx->owncloud_context->is_first_propfind = false;
// Try to fill it
fill_recursive_propfind_cache(ctx->owncloud_context, uri, curi);
}
if (ctx->owncloud_context->propfind_recursive_cache) {
// Try to fetch from recursive cache (if we have one)
fetchCtx = get_listdir_context_from_recursive_cache(ctx->owncloud_context, curi);
}
SAFE_FREE(curi);
ctx->owncloud_context->is_first_propfind = false;
if (fetchCtx) {
return fetchCtx;
}
/* fetchCtx = fetch_resource_list( uri, NE_DEPTH_ONE ); */
fetchCtx = fetch_resource_list_attempts( ctx->owncloud_context, uri, NE_DEPTH_ONE);
if( !fetchCtx ) {
/* errno is set properly in fetch_resource_list */
DEBUG_WEBDAV("Errno set to %d", errno);
return NULL;
} else {
fetchCtx->currResource = fetchCtx->list;
DEBUG_WEBDAV("opendir returning handle %p (count=%d)", (void*) fetchCtx, fetchCtx->result_count );
return fetchCtx;
}
/* no freeing of curi because its part of the fetchCtx and gets freed later */
}
int owncloud_closedir(CSYNC *ctx, csync_vio_handle_t *dhandle) {
struct listdir_context *fetchCtx = dhandle;
free_fetchCtx(fetchCtx);
(void)ctx;
return 0;
}
csync_vio_file_stat_t *owncloud_readdir(CSYNC *ctx, csync_vio_handle_t *dhandle) {
struct listdir_context *fetchCtx = dhandle;
(void)ctx;
// DEBUG_WEBDAV("owncloud_readdir" );
// DEBUG_WEBDAV("owncloud_readdir %s ", fetchCtx->target);
// DEBUG_WEBDAV("owncloud_readdir %d", fetchCtx->result_count );
// DEBUG_WEBDAV("owncloud_readdir %p %p", fetchCtx->currResource, fetchCtx->list );
if( fetchCtx == NULL) {
/* DEBUG_WEBDAV("An empty dir or at end"); */
return NULL;
}
while( fetchCtx->currResource ) {
resource* currResource = fetchCtx->currResource;
char *escaped_path = NULL;
/* set pointer to next element */
fetchCtx->currResource = fetchCtx->currResource->next;
/* It seems strange: first uri->path is unescaped to escape it in the next step again.
* The reason is that uri->path is not completely escaped (ie. it seems only to have
* spaces escaped), while the fetchCtx->target is fully escaped.
* See http://bugs.owncloud.org/thebuggenie/owncloud/issues/oc-613
*/
escaped_path = ne_path_escape( currResource->uri );
if (ne_path_compare(fetchCtx->target, escaped_path) != 0) {
// Convert the resource for the caller
csync_vio_file_stat_t* lfs = csync_vio_file_stat_new();
resourceToFileStat(lfs, currResource);
SAFE_FREE( escaped_path );
return lfs;
}
/* This is the target URI */
SAFE_FREE( escaped_path );
}
return NULL;
}
char *owncloud_error_string(CSYNC* ctx)
{
@@ -749,19 +513,12 @@ int owncloud_commit(CSYNC* ctx) {
return 0;
}
clear_propfind_recursive_cache(ctx->owncloud_context);
free_fetchCtx(ctx->owncloud_context->propfind_cache);
ctx->owncloud_context->propfind_cache = NULL;
if( ctx->owncloud_context->dav_session.ctx ) {
ne_forget_auth(ctx->owncloud_context->dav_session.ctx);
ne_session_destroy(ctx->owncloud_context->dav_session.ctx );
ctx->owncloud_context->dav_session.ctx = 0;
}
ctx->owncloud_context->is_first_propfind = true;
ctx->owncloud_context->dav_session.no_recursive_propfind = true;
/* DEBUG_WEBDAV( "********** vio_module_shutdown" ); */
ctx->owncloud_context->dav_session.ctx = 0;
@@ -773,7 +530,6 @@ int owncloud_commit(CSYNC* ctx) {
SAFE_FREE( ctx->owncloud_context->dav_session.pwd );
SAFE_FREE( ctx->owncloud_context->dav_session.session_key);
SAFE_FREE( ctx->owncloud_context->dav_session.error_string );
return 0;
}
@@ -781,7 +537,13 @@ void owncloud_destroy(CSYNC* ctx)
{
owncloud_commit(ctx);
SAFE_FREE(ctx->owncloud_context);
ctx->owncloud_context = 0;
if (ctx->clientCerts) {
SAFE_FREE(ctx->clientCerts->certificatePasswd);
SAFE_FREE(ctx->clientCerts->certificatePath);
SAFE_FREE(ctx->clientCerts);
}
ne_sock_exit();
}
int owncloud_set_property(CSYNC* ctx, const char *key, void *data) {
@@ -811,31 +573,43 @@ int owncloud_set_property(CSYNC* ctx, const char *key, void *data) {
*(ne_session**)data = ctx->owncloud_context->dav_session.ctx;
return 0;
}
if( c_streq(key, "no_recursive_propfind")) {
ctx->owncloud_context->dav_session.no_recursive_propfind = *(bool*)(data);
return 0;
}
if( c_streq(key, "redirect_callback")) {
if (data) {
csync_owncloud_redirect_callback_t* cb_wrapper = data;
ctx->owncloud_context->dav_session.redir_callback = *cb_wrapper;
} else {
ctx->owncloud_context->dav_session.redir_callback = NULL;
}
}
if( c_streq(key, "SSLClientCerts")) {
if(ctx->clientCerts != NULL) {
SAFE_FREE(ctx->clientCerts->certificatePasswd);
SAFE_FREE(ctx->clientCerts->certificatePath);
SAFE_FREE(ctx->clientCerts);
ctx->clientCerts = NULL;
}
if (data) {
struct csync_client_certs_s* clientCerts = (struct csync_client_certs_s*) data;
struct csync_client_certs_s* newCerts = c_malloc(sizeof(struct csync_client_certs_s));
newCerts->certificatePath = c_strdup(clientCerts->certificatePath);
newCerts->certificatePasswd = c_strdup(clientCerts->certificatePasswd);
ctx->clientCerts = newCerts;
} else {
DEBUG_WEBDAV("error: in owncloud_set_property for 'SSLClientCerts'" );
}
}
return -1;
}
void owncloud_init(CSYNC* ctx) {
ne_sock_init();
ctx->owncloud_context = c_malloc( sizeof( struct csync_owncloud_ctx_s ));
ctx->owncloud_context->csync_ctx = ctx; // back reference
ctx->owncloud_context->is_first_propfind = true;
/* Disable it, Mirall can enable it for the first sync (= no DB)*/
ctx->owncloud_context->dav_session.no_recursive_propfind = true;
}
/* vim: set ts=4 sw=4 et cindent: */

Some files were not shown because too many files have changed in this diff Show More