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#2487Fixes#2377
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.
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/>
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.
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
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
503 for directories means that the dir is a mounted directory from an
external mount which currently is not available. The directory is
ignored and not traversed into during discovery phase.
Previously when a sync failed, we'd retry very soon (30s) no matter how
often a sync had failed before. After this change we'll retry twice and
then back off to the regular 5min interval.
In e5269a4151 I moved the reset calls to
before the first bindValue() because we didn't consistently reset()
after exec().
However, some queries may keep a lock on the database so it is necessary
to reset() as soon as the data is read. This commit reintroduces these
reset() calls.
There also was a bug in syncjournaldb: in some error conditions the
sql query wasn't reset properly. We now always reset a query before
calling bindValue.
The fix in commit 86d8079 made the detection of changes inside
a directory more robust.
As a result, changes are detected inside a directory, even if the
files that are changed were moved away on the other remote, the algorithm
won't let the directory be removed and the directory will be re-created
Found while investigating #2296
The problem is that we should not remove a directory locally if it contains
modified files.
But the modification time of the directory is not necessarily chaning (so
the instruction of the directory may still be NONE)
We have to move the child_modified test a bit down to be recursive
As described in http://www.sqlite.org/cvstrac/wiki?p=MultiThreading precompiled
statements should not be used across thread borders. However, the reconcile
phase would reuse the statements if defined (it calls statedb function from
a different thread) so it is saver to finalize them at the end of the
update run.
Squashed commit of the following:
commit 4d9b072f560fa171a1390b7c74425614aa20e955
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Tue Oct 14 16:04:02 2014 +0200
Remove useless variable
commit 8e85de0307ec5f31bf3f92a7de793fed7d41c2ea
Author: Daniel Molkentin <danimo@owncloud.com>
Date: Tue Oct 14 16:01:52 2014 +0200
Make Windows Explorer Extension build
commit 8e2942cd9fd32e3af72d60cba0d06bd9d6222a45
Author: Daniel Molkentin <danimo@owncloud.com>
Date: Tue Oct 14 11:39:37 2014 +0200
Fix compilation
commit 0fc0c0e0e0c7e58ad97f62700256c7d1f8c0670b
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Tue Oct 14 11:48:32 2014 +0200
Windows Shell Integration: Try to let the thread notify about changes when there are changes
commit 4a1712b7c03269ca3007f167b8f313ea47655967
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Tue Oct 14 11:35:20 2014 +0200
Windows Shell Integration: Share the RemotePathChecker amongst all the OCOverlay instances
commit 2d87408e9af5a4d7ab71c460ce606ba1f367c09f
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Mon Oct 13 18:55:15 2014 +0200
Windows Shell Integration: Attempts to wait on multiple objects (WIP)
commit e448e427b6d1561ad7a40d08fc6632f4d2b4ef44
Author: Daniel Molkentin <danimo@owncloud.com>
Date: Mon Oct 13 17:58:02 2014 +0200
Introduce a worker thread
commit 2344407ec0bc1ce173ebbacadcf3992d62d94078
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Mon Oct 13 17:03:47 2014 +0200
Windows Shell Integration: try to keep the socket open using a thread (WIP)
commit ea6d5273ed60d8bc3f1c5d5c6936364d783a1c0f
Author: Daniel Molkentin <danimo@owncloud.com>
Date: Mon Oct 13 15:27:46 2014 +0200
Make Explorer plugin work again with named pipes
This is a temporary hack, which needs more refactoring.
commit 44a3437a44082379efa0078c9afd7b8bbde930de
Author: Daniel Molkentin <danimo@owncloud.com>
Date: Sat Oct 11 07:31:24 2014 +0200
Fix code
commit 123390a0f3516c0078309d7048c6d2acb9293676
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Fri Oct 10 16:29:35 2014 +0200
Windows shell integration: Use named pipe (WIP)
commit 9eea7e2321abeac6b8db0bd85bfce612dbf6bb20
Author: Olivier Goffart <ogoffart@woboq.com>
Date: Wed Oct 1 12:04:13 2014 +0200
Windows Shell Integration: Simplify StringUtil
This fixes a memory leak in CommunicationSocket::ReadLine
This allows to handle the --trust option in owncloudcmd. In the
owncloudcmd subclass of the httpcredentials, we allow to manually trust
the ssl certificate through a command line switch.
It is possible that we have should_update_etag set to true for files
that we also need to propagate. In which case we must not write to the DB
too early as this could cause data loss. (cf: issue #2296)
In the sync engine. Because that makes tha tthe lower_bounds in selective sync works properly.
For example, if both "Test" and "Test Test" are in the list, then "Test/Foo" would match the "Test Test"
because slash is after space
Task #2289
* If a 416 is returned and we used a Range header, try again
from scratch.
* The direct URL logic was also inconsistent for resumed downloads:
it sent the Range header but didn't check the returned
Content-Range header correctly. Now resuming is disabled for
direct URL downloads.
If lastEtag was null, a force sync was triggered. Force syncs
don't update the etag. The etag retrieval job would only run if
lastEtag was not null. So it could never become non-null.
Use the right check to determine whether a file has a blacklist entry,
SyncFileItem::FileIgnored was incorrect because that denotes files from
the ignore list or blacklisted files with no retries left.
The blacklistedInDb flag does the right thing. Rename it to
hasBlacklistEntry to be more explicit.
By enabling ARC for GCDAsyncSocket (as we should have done before
https://github.com/robbiehanson/CocoaAsyncSocket/wiki/ARC) there
is no chance anymore for a situation where the to-be-written NSData*
is deleted before the socket has had a chance to write it.
Interestingly, this only happened after switching to local sockets,
probably because of how immediatly the NSData* would be sent.
This commit also keeps the debug symbols for the Finder plugin.
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
The SocketAPI sends status updates for files without being asked for.
And in order to not draw the emblem again if it had not changed, the
state is compared before calling add_emblem
In case it is not allowed to create files or dirs because of missing
permissions in shares, the socket API has to report an error state
rather than the NEW state.
As discussed in mirall issue #1931
A top level shared dir can always be removed on the client, even if it is
read only shared. In that case, the removal means "unsharing". Fixed the
permission check accordingly.
See bug #1918 for more information.
Issue #1385
When renaming, we would normaly already have an error if the file already exist.
And we want to allow the renaming to chang ethe case (Eg. "hello" -> "HELLO"
Before, 0 was used to indicate the sync start which wipes the activity
window. However, if there _are_ no synced items but only ignored items
the overall counter stays zero which wipes the list all the time.
This fixes bug #2171
In some owncloud server setups multiple concurrent connections for the
same session are not supported: owncloud/core#11153
This causes issues with multiple uploads and downloads. A usual symptom
is the quota job failing and the sync aborting.
This workaround lets activity on the propagator's GET and PUT jobs
reset the timeout of all network jobs. That way, queries like the quota
job would not time out while a large up/download is in progress.
The real bug in #2219 actually was that the gui allowed users to
choose to not sync the root folder. That's not supported and no
longer possible in the UI.
Instead you may now sync a folder's files without syncing its sub-
folders.
See #2167 and #2169.
* csync_detect_update: Reupload a file if the sizes differ, similar
to how we reupload if the mtimes differ.
* PropagateUploadFileQNAM::slotPutFinished(): Abort an upload if the
size changed, similar to how we abort an upload if the mtimes changed.
The problem was that the backup function failed as we tried to
move /home/xxx/ownCloud/ to /home/xxx/ownCloud/.oC_bak
The intention was to move it to /home/xxx/ownCloud.oC_bak
Issue #1989
The client (in this case mirall) tells the Finder plugin where to get the icons.
This enables installation in different locations and in branded clients.
Re-retrieve all icons for a path in case we receive UPDATE_VIEW.
(But in contrast to previous code, don't delete the icons which then
would have caused screen flickering)
* Downloadinfo entries for files that no longer need to be downloaded
are useless and can be removed. In particular, the temporary files
holding partially retrieved files are now deleted when no longer
necessary.
* The same is true for blacklist entries for paths that are no longer
being discovered.
* Same for uploadinfos for files that no longer need to be uploaded.
On signout, syncs that are running in folders are aborted. That used to
also switch the state of these folders to 'paused'. To fix that, aborts
that are caused by user actions no longer change the folder paused
state.
Aborts due to errors should still pause folders! Otherwise we'd try
resyncing them even though there was an error.
Syncing without the system exclude file would cause lots of trouble.
For instance we would try uploading the temporary files we store
partially completed downloads in.
The installation fails because of these:
TabError: inconsistent use of tabs and spaces in indentation
SyntaxError: Missing parentheses in call to 'print'
Otherwise, method unloadFolder can not do important frees.
This is one part of the fix for #2073 because now the socketapi will
send the UNREGISTER_PATH message over the socket.
Handle problems which happen because of pausing the sync as soft errors
rather than normal errors which are blacklisted and displayed in the
gui.
This fixes bug #1959
Otherwise, if the account is signed out and opens the credential popup,
there is a wrong icon displayed. If the account is coming from keychain
this icon is quickly overwritten.
With that , make the status model aware of the account connection state.
With that, we can grey out the correct state icon if the account is not
connected and display the normal icon if the account is connected.
Remove the setSyncEnabled() call to individual folders which mistakenly
set the folders to pause. Let the folders keep their pause state on their
own.
If FolderMan is set to be enabled emit a general refresh signal rather
than one for each folder.
Previously, in folder and folderman there have been the syncEnabled
properties, but they confused the semantics: While in FolderMan the
syncEnabled flag represents the network connection and stuff, in
Folder it represented if the user paused or resumed the folder.
This resulted in mixed use of both, which lead to wrong icon states.
This patch renames the folder methods and properties to isPaused to
make more clear about what it is.
Add another index on the pathlen column. Use that column to deselect
all rows that are shorter than the path to search files below. That
shrinks the amount of rows to examine using LIKE tremendously by
a cheaply to query for criteria.
The connect in SocketAPI had to be moved because it also uses
FolderMan::instance(). And since SocketAPI is instanciated in
FolderMans constructor, this was a deadlock.
Now the connect is tried on every new socket connection in SocketAPI
but I assume that multiple attempts to connect are not an issue.
It is not enough to only implement it for the QNAM returned
by the ShibbolethCredentials, because we sometimes need it
when we have no valid credentials set (and are using dummy
credentials in the course). The main use case is the
Webview opened by Shibboleth for FBA.
But as a side-effect, we can use it to handle auth requests
from the updater and other places.
When recovering from a inalid move operation, we call
avoidReadFromDbOnNextSync. This will remove the fileid from the db so
we don't detect a move on the next sync. But we want the next sync to fetch
the file id again, and this can only happen if we don't read them
from the db and do the actual PROPFIND, this is done by avoidReadFromDbOnNextSync
However, if there is propagation in that source directory later, it
will overide the invalid etag with the real one and we will not uissue the PROPFIND
to fetch the fileid.
We must therefore also protect the future write to the DB when calling
avoidReadFromDbOnNextSync
With UPDATE_VIEW the plugin gets notified to update the overlays.
It invalidates the entries in the file icon cache for the path
that comes with the UPDATE_VIEW and than refreshes the view.
It is called automatically by QWizard and do not need to be called explicitly
But setVisibla(false) don't really have an effect there since show() is going
to be called on the page
When the url do not have a path (for example: "http://example.com" as
opposed to "http://example.com/"), its path is not a prefix of the
root path of the cookie (usually '/')
By adding the dav path, we make sure the URL has a path.
This made a bug when the owncloud url was just a domain name and did not
have a path
Otherwise the buffer might fill up too quickly and get too large and consume
too much memory which could lead to crash in extreme cases
Should fix issue #1974
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.
When using the "Limit automatically" limit, we wait for 25% of the time
it took to upload something.
However, if we go to sleep while uploading, the time it took to upload may take
days. And waiting for 25% of a day is too long.
So never wait for more than 10 seconds
This may be related to issue #1880
If the local folder changes, the sync has to be reinitialized as
well. Until now we did not detect that, which led to the case that
the sync folder was not reinitialized in case only the local folder
changed in the setup dialog.
Before, we would only detect it if all the files were removed, and no
file where added or changed. This may not be enough because there might
be a welcome.txt file. Now, we check that none of the file stays the same,
and some files are removed.
Relates issue #1948
We can't call csync_set_userdata in owncloudcmd because it is
going to be overwritten later in the SyncEngine.
So we had an object of type SyncEngine* that we cast to CmdOptions*
and the trust flag was in the padding, so was some random data.
Therefore we must use global variables in that case in order to
know if we should ignore the certificate.
That macro is new in Qt5, define it as well when compiling with Qt4
so we can use it in mirall
Note: QNetworkCookieJar::deleteCookie was not existing in Qt4.
Headers need not to be added if they are not going to be installed
The list was incomplete anyway, and most of the _HEADERS variables
were even not used
Those class are maintaining the folder for the mirall configuration
They are not usefull in command line clients
Also the FolderWatcher is only used by the folder and not used by the
command line clients
Earlier clients used QtKeychain without a QSettings object, which made
QtKeychain to write the password encrypted into a settings default
location, ie. the registry under windows.
If we can not find a password at the new location it is tried to read
the password from the old default location once. That makes people
happy in migration scenarios.
We decided that we never want to rename a directory behind the
back of the user as the user may be using files in the directory
during the sync.
If moving is not allowed, we just erase the inode form the database so
the next sync will try to do an upload and delete and recover from there
using normal resolution.
This also add some code to update the inode back to the db when it is detected
as changed.
The mutex is not shared with any thread, so it is totaly useless.
Yes: there are possible races here. (with the account, but also with the
user and password)
In order to avoid the warning
warning: anonymous variadic macros were introduced in C99
Due to the use of variadic macro in the qDebug macro in Qt 5.3
C++11 requires a space between string literal and macro to avoid the
ambiguity with user defined litteral
That reads the credentials from the mirall config file if it was not
defined on the command line. Moreover, the connection is validated
before, which sets up the credentials properly.
While uploading a new folder, if the folder is renamed on the server
when still uploading, the result will be that the files that are already
uploaded will end up in the new filder name, but the file that were
not still are in the old folder.
After renaming, all the new uploads wil fail with an error on this sync
because the parent directory don't exist.
But they were uploaded with the old name in the next sync because
the renaming was not detected because the file id was not in the DB
Fix the problem by fetching the file id always when creating a new
directory, on the next sync, and saving it in the database ummediatly
https://github.com/owncloud/enterprise/issues/191
The current code only update the permissions in the DB when
the permission becomes non-empty.
Now we update the permission each time they change.
That way the code is the same for file id and permission so it is
simpler.
To distinguish no permission present to nothing is allowed.
That was the intention of the old code but it did not work as
the first if was always taken
Since remotePerm from csync is never NULL (as it is a buffer),
we consider that if it is empty, there was no permission set
(and therefore everything is allowed)
csync will put a space in the permission if any permission was set
If the result of a restored directory is SoftError, this prevent
to sync the rest of the directory
Therefore, we introduced a new status Restored, which means that
the job was a success, but is a restoration and therefore should be
seen as a warning
when the instruction is NONE, we may return from this function
before having registered the permission in the SyncEngine::_remotePerms
hash.
Move the code a bit up.
If we don't have the cookie in the keychain (e.g. the keychain is
unavailable) but there is still session cookie in the cookie jar,
showing the browser won't ask for authentication.
parseCookies did not work as expected. Now we just hard-set the
token credentials into the Cookie header for QNAM jobs.
This is the same behaviour as for neon jobs.
(cherry picked from commit 855a8c0a335f76b82b8e647a8c5a4ae692065d3b)
The legacy job might still need the neon session and the propagator.
We need to make sure the thread exits before.
This fixes crash when pausing a sync made with the legacy jobs
(for example when there is network limitation)
This should fix https://github.com/owncloud/enterprise/issues/200
If the Folder::Map object is kept locally in the wizard, changes to
the map are not reflected there, as they happen when signing out.
This fixes bug #1875
Direcotries are removed at the end, and we don't want to update
parent directory etag before the delete is performed, or the next
sync may read from db and think the files are not removed.
Issue #1845
When we detect a precondition failed, it is possible that it is
because the etag in the database is wrong. We must therefore not
read from the database on the next sync. In order to avoid that, we
reset the etag of parent directories to invalid values
Fixes#1767
Or an url with '#'
Fixes#1838
The problem is a bug fixed in Qt5 now breaks.
In Qt4, QUrl::setPath() did not properly handle path with '#' in them
and QUrl::toString would restitute the '#'.
But csync will blindly do "uri + path" before passing the path to
VIO. because csync_update has no idea that the VIO plugin need special
encoding, the encoding cannot be done there. But csync_owncloud then
encodes the full path. So if the uri contains '#', it must not be already
encoded or there will be two encoding.
The problem was if there was a false conflict: the file has been touched
both on the server and the client.
- etag has changed on the server
- mtime has changed on the server and the client and is the same
- and file size is the same on both the server and the client
This may also happen if the file is uploaded on the server, but the client
looses connection (or crashes) before it get notified of the etag.
In both tree, the instruction is EVAL, but we reduce it to a NONE because
we detected that the conflict is 'false'. Still, we need to update the db
with the new etag. (_should_update_db)
The problem was that we would set the flag on the wrong tree.
This was not a problem when the file was NEW on both side since we checked
for null etag and used the other one then.
We need to compare the other way round and compare only the file name
because our sync directory might be symlinked and then resolve to
another canonical path (but we were only interested in the filename part
anyway)
When we abort, each job currently running may result in a call to finished().
It used to cause a crash because we would unlock the _syncMutex twice
Fixes#1793
This will cause the browser window to open again after it has been told to close
if a network job has run in the background while the browser window was visible.
Fixes#1814
The goal here is that it is going to be destroyed with the application
It need to be destoyed so the folder are destroyed, which is required
for properly finishing the sync while exiting.
It must not be destroyed after the application because the QSQLite plugin
may be already destroyed in that case.
Since the constructor of FolderMan is called earlier, we can't call the
config file too early
fixes 1793
Returns true if the underlying file system is case preserving instead
of case sensitive. That is true for Mac and Windows currently. Only
Linux has a case sensitive file system usually.
- Don't give the settings window an always-on-top hint, or else
sub dialogs will pop-under. Also, people seem to (ab-)use it
as a status monitor... well
- raiseWidget() can only really do one thing: remove the dialog status
from dialogs without a parent due to a bug in Qt. The previous
implementation never really worked. Tested on Mac and Gnome 3 so far.
Fixes#1795
Fixes parts of #1775
The shibboleth implementation no longer maintains its own QNAM.
Instead, MirallAccessManager now holds a custom QNAM implementation
which saves cookies to a file on disk.
This patch also reduces some complexity wrt the browser window,
which used to be deleted via a roundtrip to its callee, which
is not longer required.
Fixes#1764 and Enterprise bug #165
Going forward, AbstractCredentials::getQNAM() could maybe removed entirely.
If a user only builds some parts of the documentation and afterwards
wants to install owncloud-client afterwards via "make install", the
built parts should be installed in any case.
bubbleUpSyncResult is only called from slotSyncFinished, so if _engine
is invalid there, it is also invalid in slotSyncFinished
This reverts commit aee7515d42.
In case two renames are done on the same file/folder very quickly we
lost the information that the second operation was also a rename. That
was because we tried to get the inode value from a stat on the file once
the first rename was finished. But at that point, the file was already
gone because of the second rename.
Now the original inode is kept and written to db in case the file can
not be stat'ed.
This fixes bug #1737
We don't include them in the total amout of files so it should
not be included in the progress either.
Also, for some reasons directories seems to be 16kB on windows
Fixup commit 9193286fc1
Use the right URL for the PROPPATCH and HEAD, do not let other
jobs start when we wait for the UpdateMTimeAndETagJob
Update the etag and the fileid of the real item.
Changed the account settings estimation to display both current file and overwhole estimation.
Decresed the progress font size to fit the added information
This is only used for a very specific server that do not support
changing the extension of files without re-uploading the file.
Since the change is small and self contained, it is guarded by a #ifdef
(Removed old BLACKLIST_ON_ERROR option that is no longer in use)
Before, we would only set up a file system watcher when we read the
config at startup. But we also need to do it in the other case when
the user configure new folder to watch
We can't use the quota job for that as it needs the credidentials and therefore
may re-enter the credidential code when we are currently trying to fetch the credentials.
The quotainfo.cpp part of this patch is basically a revert of d836b80153
We fetch the id from the server, but don't save them in the database.
I Could have used INSTRUCTION_UPDATED for that, but then i would need to update the
reconcile algorithm to take in account the fact that UPDATED is possible there.
Instead, use should_update_etag which means the db is going to be written again
Remove reference to old instruction _UPDATED and _DELETED which does not make sens with
the new propagator
Improve the test to test this case, and that etags are properly writen to the DB
when there is a fake conflict
This can cause the crash because the _engine member is deleted in the
sync finished slot. The solution is to store the stopWatch object
before the engine is destroyed.
Fixes bug #1675
From the Qt 5 documentation:
Note: when porting QDesktopServices::DataLocation(obsolete)
to QStandardPaths::DataLocation, a different path will
be returned.
QDesktopServices::DataLocation was GenericDataLocation
+ "/data/organization/application", while
QStandardPaths::DataLocation is GenericDataLocation
+ "/organization/application".
We'll resort to the deprecated version, since we'll need to fix
data locations to be XDG compliant sooner than later anyway
(currently scheduled for 1.8)
- Use SHA 265 instead of obsolete MD5 where possible (Qt5)
- Remove <tt> formatting: that simply looked ugly
- Wrap SHA 265 hash
- Use spaces as separators
As usual, the default needs to remain ':' separation, because
it's needed to pass valid hashes to csync.
It is required to have all ownCloud system files in the ignore list
that have to be ignored, because the ignore list is fed into the
folderwatcher, which needs to ignore changes to both the journal and
the logfile.
Since the journal is now in the same directory, we don't need this
security anymore
When the directory is removed, the sync will error out saying that the
journal cannot be loaded or created
The commit message say that this line should be necessary to show
the information when the setting dialog is open, but this is working
now via the signals
Those tests are existing on the legacy jobs.
We check there is an etag so we make sure a proxy is not in between.
(We have seen user complaining because their proxy is replacing the
pages with one that says they need to enter their login and password)
Also it is important to check that the etag has not changed if we resume
(this may happen if the file is changed on the server between the update
phase and the propagate phase, and that we resume this file)
We now listen to changes to files and when an event is received we first match
the file name to the "ignored paths list" and only if the the file that was
changed didn't match figure out which directory needs to be synced.
(In french, one may want to add a space before the colon.
Other languages may want to change the order)
Also use the two argument version of arg() to avoid issues if the first
string contains a '%1' sign
Since we removed the vio abstraction, we cannot use the file system anymore
as a remote. and because we unfortunately can't use a real server,
just disable that test.
If we never fetched the credidentials, the _user and _password will be empty,
we should therefore not try to save them because it would just erase them.
Version 1.5.2 always try to fetch the creds at startup. But now we only
do it if we detect an internet connection
It is likely to re-enter if there is two jobs that asks for a password.
Example:
1. log out
2. restart the application
3. enter a wrong password
4. enter a wrong password again a few times
5. enter the correct password
6. it should must not prompt for the password again.
Because of the re-entrency, it was still prompting for the password several
times after the right password had been entered
If a QNAM job (e.g. Quota or ETag job) gets redirected,
we'll invalidate and then prompt to re-fetch the credentials
from the user.
(The keychain credentials will be wrong so they get deleted)
We need to reset the credential type when
returning to the first page from later steps.
Otherwise, unfinished credential instances
and their NAM will try to fetch data, which
will fail with weird symptoms.
We need to reset ctx->remote.read_from_db BEFORE caling vio_closedir
Otherwise, it may interpret the handle as a 'bdtree' handle instead of
a owncloud handle.
Should fix#1442
It should not create a conflict in that case.
Also when editing a file, create a conflict using the normal way,
after downloading the file and checking it is not the same
Before this commit, parts of mirall were aware of the state, but not all.
Also, the state was not set back to Connected again in all cases. This
commit introduces the following changes:
- Make QuotaInfo a member of Account
- QuotaInfo and Folder (EtagJob) can put the client in disconnected mode
- FolderMan now disables etag-polling when offline
Fixes#1459Fixes#1441
Renamed owncloudpropagator_qnam to propagator_qnam
Move the jobs in propagatorjobs.cpp
Move the neon jobs that have a qnam equivalent into propagator_legacy.cpp and
rename the jobs accordingly
- Do not start them in parallel, start them in sequence instead, as they are quite
and there are already other jobs running in parallel normaly
- Do not load the fill into memory
- Support resuming
Rationale:
When Qt5 is not found, the script will automatically use Qt4.
However, without this change, when Qt4 is not found, it will not
try to find Qt5 because BUILD_WITH_QT4 is ON by default forbidding the
use of Qt5 even if it is installed.
Also, other packages default to Qt5 including qtkeychain
See also issue #1418
If the etag of a directory hasn't changed, the content for the csync
tree can be restored from database. The code doing that is now optimized
so that this does not take so long any more.
Imagine we have a file:
foo/bar/moo
if we do mv 'foo' 'foo2' and that we issue a MOVE on the server
and will update the entry 'foo' in the database with the new etag
If we write the etag of foo but not the etag of the sub item, when
we read from db on the next sync, we will miss them and beleive they
have been removed on the server
Not yet supported:
- chunking
- if the file changes while uploading
- aborting
- owncloudcmd (because of the dependency to the account and the credidentials)
We can use the _modtime, since normaly we just set the the modtime
of the file to this time.
The problem is that Qt does follow symlinks (FILE_FLAG_OPEN_REPARSE_POINT)
And therefore was causing problem with symbolic links.
Fixes#1307
- Don't re-download updates whom's auto-install has clearly failed before
- Don't signal newly available auto-upgrade if it has failed once
- Remove downloaded update after (un)successful auto-update
- Remove as many temporary keys after an (un)successful auto-update
Add a new state of the account in which the credidentials are invalid,
but we are still trying to get the user enter his password.
Make sure that fetched() is ALWAYS emitted after we call fetch on the
credidentials, so we can know that the user pressed cancel. In that
case, go in the SignedOut state.
Fixes#1353
- Renamed GenericUpdater -> OCUpdater
- Make more API Private
- Split up in classes to reduce complexity:
- PassiveUpdateNotifier subclass for Linux
- NSISUpdater for Windows
This method is also called if the sync was disabled due to
network problems and such, ie. from the ETag change check.
In that case, we do not want to go to the Prepare state as
we not neccessarily want to have the folder synced now.
This fixes the problem that the folders were resynced way
to often which we had in master for a couple of days now.
Some Qt SSL function used to return QString now return a QStringList.
By having QStringList(...).join(':') the code will compile both
if the ... is a QString or a QStringList. So the code will still
compile in Qt4.
If the connection fails, the user is now being asked if he does
agree to a new attempt via an unencrypted connection. If he complies,
the connection will be reattempted using plain HTTP.
Fixes#1356
The only method which is used from another thread is abort().
So the only thing that needs protection is that function, and the
function which may race with. Which are csync_request_abort which
should not race with csync_resume
I saw a crash were a folder which was deleted was dereferenced later
in the Quota check slot. There the folder pointer returned from folder
map was zero.
toUtf8() returns a temporary QByteArray wuich is only valid until the
end of the statement (the next ';'). QByteArray::data() returns a
pointer to the QByteArray's data which is only valid if the QByteArray
is valid.
Keeping the char* is therefore wrong.
Should change error message such as
"CSync failed to connect through a proxy. 500 Internal Server Error"
To:
"CSync processing step update failed. 500 Internal Server Error"
Unfortunately, we cannot determine the target path for the .lnk file
without pulling in closed source plugins (or write our own), a length
I am not willing to go in the light of MSI.
Fixes#356
If the source file changes, the overall transmission size is not longer
correct. Fixed that by pushing the change over the previously calculated
size to csyncthread. Also set the mtime and size in the item object in
propagator to avoid doublicate uploading.
Since `cleanPath` removes all the trailing slashes (84bfbd4cb0:src/corelib/io/qdir.cpp#L2118) the check at line 138 wrongly assumed that
`D:\Test` is a parent folder of `D:\TestFoo`.
Normalize removes the quote and the -gzip.
We assume that the normalized etag is in the DB
This is how it worked in mirall 1.4
We added normalization in case there is a -gzip saved to the database.
But since this was broken in 1.4 anyway, it will just force a
re-download if -gzip was added. (1.4 anyway is broken with such
server and always do redownload all the time)
After the upload is complete, the file has been changed in the server and the etag
need to be updated in the db if we don't want to have desatrous conflicts later.
Let mirall know the real status, and expose the function to check weather the file
has changed so mirall can do thing properly
In original csync, csync_get_status() returned the status variable from
the context, which indicated in which state the sync run currently is,
which is never used.
What we expected in our mirall code however is the CSYNC_STATUS as
detailed result of a certain operation. Changed the function to reflect
that, even if that is an evil API change.
EVAL_RENAME is set at the update phase and means that this is the destination of
a file that has been renamed.
RENAME is set for the file that need to be renamed.
Before, we knew the difference because of which remote the instruction was
but now we need to make the distinction explicit
The fileid defaults to null for old database.
Since commit 4b8f2a287f, we query
the file id to get the etag.
c_strlist_add cannot append null entries, so it would just discard
the md5 instead
File id may change when upgrading to owncloud 6 or when upgrading to mirall 1.5
This also changes the location where we check if we need to read from
the DB. Instead of doing it from csync_ftw, we do it from
_csync_detect_update. In that function we know the etag and the file id.
Which mean we change the flag before the recursive call to csync_ftw instead
of in the begin of the function. Therefore, we need to restore the flag
after calling the function to the previously saved state.
This change, together with a change in mirall calling the two functions
in folderman, should fix https://github.com/owncloud/mirall/issues/1115
This needs to be verified and maybe reverted!
All the cleanup is done in owncloud_commit which should
necessarily be called.
Should fix https://github.com/owncloud/mirall/issues/713
The problem was that csync_destroy was called on another csync
instance in another thread, resulting in a crash
Yes, there is still a problem with the proxy settings.
When the errno is ERRNO_ERROR_STRING it means the error string is a
valid string with the error, and it should not be overwritten with
the HTTP reason_phrase
Fixes https://github.com/owncloud/mirall/issues/1088
Resetting this in trivial helper functions leads to the fact that
error conditions happening in functions calling these helpers get
lost which should not happen.
Resetting this in trivial helper functions leads to the fact that
error conditions happening in functions calling these helpers get
lost which should not happen.
It is disabled by default, but can be enabled by the library
user on demand. We suggest to enable it for the first sync
and when the local DB is small enough.
It only gets used for the first PROPFIND. In case the server
supports the Depth 'infinity', we keep the cache. In case
the server does not support it (= reports only 1 level)
we will still use the result by converting it to the legacy
PROPFIND cache.
Bug owncloud/mirall#779 reports about continous upload of files
even though nothing has changed. Logfiles show the fact that the
inode on windows is not reliable for this. Disabled as a result
to fix bug #779.
If the server does not acknowledge the transfer with sending back an
ETag after the last missing chunk was uploaded, this is an error
which is now reported by this new error type.
If the server does not acknowledge the transfer with sending back an
ETag after the last missing chunk was uploaded, this is an error
which is now reported by this new error type.
Fixes https://github.com/owncloud/mirall/issues/1010
In case of NE_TIMEOUT the request is repeated for three times. In this
case, the hooks weren't correctly unhooked which caused a crash.
Fixes https://github.com/owncloud/mirall/issues/1010
In case of NE_TIMEOUT the request is repeated for three times. In this
case, the hooks weren't correctly unhooked which caused a crash.
This also allow to reduce duplicate code in csync_commit, and ease the
error reporting of csync_commit
csync_commit is supposed to be done after the previous sync, it is
better to open the statedb before the sync
- use proper casts
- use aproproate types
- offer to build with -Werror
- make printf attribute hinting gnu format style
- remove unused helper methods
- begin to use inttyes.h macros where suitable
- move var declarations to the beginning of the method
- properly use _FILE_OFFSET_BITS
- silence variables unused depending on the define
The overall sum of files to transmit has to be calculated over both
trees. Therefore a utility function was written which is called from
the csync_propagate_files main function.
Moreover, the current file number counter in overall progress now ranges
from 1..n rather than 0..n-1.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
The result is that we do not save the parent directory in the db
(recursively) so on the next sync, we don't read this directory from the
db as there might be missing entries since download error are not saved
in the db.
After commit a25fbb6160, we re compute the
hash before insterint into the db. Which means that the test need to
have different paths in order to succeed
With that, modules can implement get and put functions to up- and
download files from or to a given file descriptor. That is just an
alternative way of the usual read/write way that is still there
of course.
If a module wants to implement get and put, it has to set its
capabilities to true.
Only a user of csync is allowed to call csync_set_userdata(). Never call
this inside of csync cause you will overwrite the data pointer and
information is lost!
The blacklist might hide errors and reduce the ability to do proper
diagnostics.
Note that in _csync_push_file, we kept csync_statedb_get_progressinfo
because it is also used for the resume feature
Also added output when a file has been blacklisted.
In that case, the first chun would be uploaded as a chunk.
Take that case into account and if we get a success after only one
chunk, we try to delete the chunk, and it it worked, it means chunking
was not supported.
Fixes: https://github.com/owncloud/mirall/issues/595
Some corruptions do not happen when the database is opened, but only on
some querries.
In that case, recreates the database if querries such as DROP or
CREATE fails.
Don't take in account which file is newer, the conflict file will always
be on the locale side.
This patch also consider that INSTRUCTION_NEW and INSTRUCTION_EVAL means
the same.
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt
The following would happen:
- in the update for the local parent folder foo/bar/, the md5 is 0
because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
error and nothing will be changed on the server, the etags stay the
same
- We do not do any PROPFIND at the end so we do not fetch the etag
anymore. The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have not changed on the server, we read
from the DB. But a md5 of 0 in the DB means the folder was removed on
the server. That would remove the local folder (BAD!)
So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
csync would not update the etag (md5) for directoru in the database if
the etag has changed, but none of the files within that directory
actually changed
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt
The following would happen:
- in the update for the local parent folder foo/bar/, the md5 is 0
because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
error and nothing will be changed on the server, the etags stay the
same
- We do not do any PROPFIND at the end so we do not fetch the etag
anymore. The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have not changed on the server, we read
from the DB. But a md5 of 0 in the DB means the folder was removed on
the server. That would remove the local folder (BAD!)
So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
csync would not update the etag (md5) for directoru in the database if
the etag has changed, but none of the files within that directory
actually changed
If the files are equal and the conflict was created because the
timestamps were screwed the conflict is removed again. This only
works on the local repository so far.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
If the files are equal and the conflict was created because the
timestamps were screwed the conflict is removed again. This only
works on the local repository so far.
Conflicts:
src/csync_propagate.c
If the files are equal and the conflict was created because the
timestamps were screwed the conflict is removed again. This only
works on the local repository so far.
The returned string of getenv() has an unknown size. You need to store
the result always in a char array with a certain size to make sure we
don't feed tainted data to the next function call.
The returned string of getenv() has an unknown size. You need to store
the result always in a char array with a certain size to make sure we
don't feed tainted data to the next function call.
The returned string of getenv() has an unknown size. You need to store
the result always in a char array with a certain size to make sure we
don't feed tainted data to the next function call.
When the folder is locked on windows, rmdir fails and the folmder is not
removed. But on the next sync, one should try to remove that folder again, and
not upload it to the server as we did before.
There was two problems:
1- The removed folder is still in the DB, so when csync_update read from
DB, for the remote, it still finds it. Fix that by storing an empty MD5
for directories that should have been deleted.
2- The folder is likely to be modified since its contents are gone.
Which means next sync will try to sync it back to the server.
Fix that by refreshing the mtime in the tree
When the folder is locked on windows, rmdir fails and the folmder is not
removed. But on the next sync, one should try to remove that folder again, and
not upload it to the server as we did before.
There was two problems:
1- The removed folder is still in the DB, so when csync_update read from
DB, for the remote, it still finds it. Fix that by storing an empty MD5
for directories that should have been deleted.
2- The folder is likely to be modified since its contents are gone.
Which means next sync will try to sync it back to the server.
Fix that by refreshing the mtime in the tree
Some load balancers may add more cookies, and we would pick the wrong
one. So keep all the cookies.
If we already read a session cookie, don't parse more cookie as they are
not session cookie.
Some load balancers may add more cookies, and we would pick the wrong
one. So keep all the cookies.
If we already read a session cookie, don't parse more cookie as they are
not session cookie.
Scenario:
We have A/B/C/file.txt
mv A/B/{C,C2}
start sync, and before sync ends
mv A A2
then as sync start and we try to merge, since it is no longer possible
to stat A/B/ which has been updated as C was moved, then the database
would not be synced
then start sync again and A/B/C2/file.txt is seen as new, and is
duplicated
By saving the database anyhow we work around that problem
It is important if there are operations such as delete, which operate on
the remote tree, and thet may also invalidate the id we got on the
localtree (for example, the parent directory of a removed file)
Do not do a stat before, it is unlikely that it succeed, and if it does
indeed show there is a file with the same name, the following mkdir ill
fail properly
(The only difference will be that EEXIST will be returned instead of
ENOTDIR
In some cases (if the local file can't be opened) close will be called
without calling sendfile. That would result in the hook leaking, and
causing crash because it is only unhooked in sendfile.
Else, the id are not good, and if we move folders like this:
mv folderA folderB
csync
mv folderB folderC
csync
we want that the first sync refresh correctly the folderB id so that the
second sync do not re-create folderB
When working on the renamed path, we are on the remote tree, but the new
folder is only on the local tree. hence the 'tree' passed to the helper
function is not the same.
This reverts commit ce94beb068.
This broke because the tree are not merged yet.
If a file was added on the remote, it is not yet in the remote tree, and
still we need to query the ETag
Now check on both the result code and the content type of the
reply. If the content-type is not applicaton/xml do not accept the
answer even if the status code is good.
This fixes https://github.com/owncloud/mirall/issues/92
The statedb hash function only hashes the remote side and not the local
path. So if a user changes to a new empty directory to sync it with the
remote counter part, csync will delete all files.
This will result in a new full sync for all sync setups, but we will not
loose any data.
This test runs on an empty database. That also means that there is no
ID in the database which is needed to detect the update. An empty
ID means that the status must be evaluated.
Modules such as ownCloud make sure anyway that the upload to a
remote resource happens atomar. This patch allows to switch off
the default behaviour of first copying to a temp file in the
same directory. Use csync_set_remote_push_atomar function to
switch off.
Modules such as ownCloud make sure anyway that the upload to a
remote resource happens atomar. This patch allows to switch off
the default behaviour of first copying to a temp file in the
same directory. Use csync_set_remote_push_atomar function to
switch off.
Modules such as ownCloud make sure anyway that the upload to a
remote resource happens atomar. This patch allows to switch off
the default behaviour of first copying to a temp file in the
same directory. Use csync_set_remote_push_atomar function to
switch off.
That saves a lot of stat calls because the for each PUT a stat has
to be done if the parent dir exists.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
The script t1.pl is a perl based check script for the ownCloud
module of csync. It requires a running ownCloud server and does
a couple of blackbox tests with it.
See README for more information how to operate.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
That gives apps the chance to use the efficient treewalk of csync
to get information on the tree.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
The script t1.pl is a perl based check script for the ownCloud
module of csync. It requires a running ownCloud server and does
a couple of blackbox tests with it.
See README for more information how to operate.
The script t1.pl is a perl based check script for the ownCloud
module of csync. It requires a running ownCloud server and does
a couple of blackbox tests with it.
See README for more information how to operate.
For command line option parsing, better use the getopt functions
instead of the GNU libc specific argp functions if we want to be
portable. argp usage does not compile on MacOS, thus it was now
removed from csync.
If a propcall happens to webdav.php the webdav server returns the
result list for all entries. In stat only the webdav.php entry is
interesting and must be searched within the result list.
Especially ne_ssl_trust_default_ca seems to crash in case no SSL is
used actually. Added a flag to determine between SSL and no SSL.
Moved a debug message to the right place.
Rearranged function sequence and added stat call to parent dir to
function open if file is written to. That allows a proper ENOENT
return value if directory is not yet existing. Fixed more escaping
glitches.
- use the latest version of the two files under its original filename
in both destinations (same as currently implemented)
- additionally, create a copy of the older file under a different name
using the same file extension with appended marker (e.g. "conflict")
and timestamp in both destinations
(e.g. textfile.odt -> textfile_conflict-20100222-105000.odt)
- At the Moment 'textfile_conflict-20100222-105000.odt' is only created
on the side where the conflict has occurred and gets synced to the other side
on the second sync.
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Hautatu nola nahi duzun ${APPLICATION_NAME} instalatzea."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Hautatu nola nahi duzun ${APPLICATION_NAME} instalatzea."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} dagoeneko instalatuta dago.\nHautatu zer operazio egin nahi duzu eta klikatu Hurrengoa jarraitzeko."
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_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
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_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$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$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$UNINSTALLER_APPDATA_LABEL_2"Leave unchecked to keep the data folder for later use or check to delete the data folder."
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$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar les notes de versió"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"S'ha trobat el(s) procés ${APPLICATION_EXECUTABLE} que s'ha d'aturar.$\nVoleu que l'instal·lador l'aturi?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"S'estan matant els processos ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Procés per matar no trobat!"
StrCpy$PageReinstall_NEW_Field_1"Una versió anterior de ${APPLICATION_NAME} està instal·lada en el vostre sistema. Es recomana desinstal·lar la versió actual abans d'instal·lar. Seleccioneu l'operació que desitjeu realitzar i feu clic a Següent per continuar."
StrCpy$PageReinstall_NEW_Field_2"Desinstal·lar abans d'instal·lar"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Trieu la manera com voleu instal·lar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una versió més recent de ${APPLICATION_NAME} ja està instal.lada!! No es recomana instal.lar una versió més antiga. Si realment voleu instal.lar una versió més antiga, és millor primer desinstal.lar la versió actual. Seleccioni l'operació que desitjeu realitzar i feu clic a Següent per a continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} ja està instal.lat.↩\nSeleccioneu l'operació que desitjeu realitzar i feu clic a Següent per continuar."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Drecera a l'escrptori per ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Drecera d'inici ràpid per ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Esborra la carpeta de dades de ${APPLICATION_NAME} del vostre equip."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Voleu esborrar la carpeta de dades de ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Deixeu-ho sense marcar per mantenir la carpeta de dades per un ús posterior o marqueu-ho per esborrar la carpeta de dades."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Sí, esborra la carpeta de dades."
StrCpy$UNINSTALLER_FILE_Detail"Escrivint el desinstal·lador"
StrCpy$UNINSTALLER_REGISTRY_Detail"Escrivint les claus del registre de l'instal·lador"
StrCpy$UNINSTALLER_FINISHED_Detail"Acabat"
StrCpy$UNINSTALL_MESSAGEBOX"No sembla que ${APPLICATION_NAME} estigui instal·lat en la carpeta '$INSTDIR'.$\n$\nContinuo igualment (no recomanat)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Zobraz poznámky k vydání"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Zobrazit poznámky k vydání"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Nalezen proces(y) ${APPLICATION_EXECUTABLE}, které je nutné ukončit .$\nPřejete si, aby je instalátor ukončil?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Nalezen proces(y) ${APPLICATION_EXECUTABLE}, které je nutné ukončit .$\nPřejete si, aby je instalátor za vás ukončil?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Ukončuji proces ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proces k ukončení nebyl nalezen! "
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proces k ukončení nebyl nalezen! "
StrCpy$PageReinstall_NEW_Field_1"Starší verze ${APPLICATION_NAME} je nainstalována na tomto systému. Doporučuje se předem tuto verzi odinstalovat. Zvolte operaci, kterou chcete uskutečnit a klikněte na tlačítko Další pro pokračování."
StrCpy$PageReinstall_NEW_Field_1"Starší verze ${APPLICATION_NAME} je nainstalována na tomto systému. Doporučuje se předem tuto verzi odinstalovat. Zvolte operaci, kterou chcete uskutečnit, a klikněte na tlačítko Další pro pokračování."
StrCpy$PageReinstall_NEW_Field_2"Odinstalovat před instalací"
StrCpy$PageReinstall_NEW_Field_2"Odinstalovat před instalací"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Zvolte, jak chcete ${APPLICATION_NAME} nainstalovat."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Zvolte, jak chcete ${APPLICATION_NAME} nainstalovat."
StrCpy$PageReinstall_OLD_Field_1"Novější verze aplikace ${APPLICATION_NAME} jejiž nainstalována. Instalace starší verze se nedoporučuje. Pokud opravdu chcete tuto starší verzi nainstalovat, tak je lepší nejprve odinstalovat současnou verzi. Zvolte požadovanou operaci a klikněte na Další pro pokračování."
StrCpy$PageReinstall_OLD_Field_1"Novější verze aplikace ${APPLICATION_NAME} jejiž nainstalována. Instalace starší verze se nedoporučuje. Pokud opravdu chcete tuto starší verzi nainstalovat, je lepší nejprve odinstalovat současnou verzi. Zvolte požadovanou operaci a klikněte na Další pro pokračování."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} je již nainstalována.\nZvolte požadovanou operaci a klikněte na Další pro pokračování."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} je již nainstalována.\nZvolte požadovanou operaci a klikněte na Další pro pokračování."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Zástupce na ploše pro ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Zástupce na ploše pro ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Zástupce rychlého spuštění pro ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Zástupce rychlého spuštění pro ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Odstraňte složku s daty aplikace ${APPLICATION_NAME} z tohoto počítače."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Odstraňte složku s daty aplikace ${APPLICATION_NAME} z tohoto počítače."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Chcete smazat složku s daty ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Chcete smazat složku s daty ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Ponechejte nezaškrtnuté, pokud chcete složku s daty ponechat pro pozdější využití nebo zaškrtněte, pokud chcete složku smazat."
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Ponechejte nezaškrtnuté, pokud chcete složku s daty ponechat pro pozdější využití, nebo zaškrtněte, pokud chcete složku smazat."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Ano, smaž tuto složku s daty."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Ano, smazat tuto složku s daty."
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Proces(sen) ${APPLICATION_EXECUTABLE} moet worden gestopt.$\nWilt u dat het installatieprogramma dat voor u doet?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Gevonden ${APPLICATION_EXECUTABLE} proces(sen) moet worden gestopt.$\nWilt u dat het installatieprogramma dat voor u doet?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Het te stoppen proces is niet gevonden!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Het te stoppen proces is niet gevonden!"
StrCpy$PageReinstall_NEW_Field_1"Er is een oudere versie van ${APPLICATION_NAME} geïnstalleerd op uw systeem. geadviseerd wordt om de huidige versie te de-installeren voordat de nieuwe versie wordt geïnstalleerd. Selecteer de uit te voeren actie en klik op Verder om door te gaan."
StrCpy$PageReinstall_NEW_Field_1"Er is een oudere versie van ${APPLICATION_NAME} geïnstalleerd op uw systeem. geadviseerd wordt om de huidige versie te de-installeren voordat de nieuwe versie wordt geïnstalleerd. Selecteer de uit te voeren actie en klik op Verder om door te gaan."
StrCpy$PageReinstall_NEW_Field_2"De-installeren voor installeren"
StrCpy$PageReinstall_NEW_Field_2"De-installeren voor installeren"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Kies hoe u ${APPLICATION_NAME} wilt installeren."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Kies hoe u ${APPLICATION_NAME} wilt installeren."
StrCpy$PageReinstall_OLD_Field_1"Er is al een recentere versie van ${APPLICATION_NAME} geïnstalleerd! Installeren van een oudere versie wordt niet aangeraden. Als u echt de oudere versie wilt installeren, adviseren we de huidige versie eerst te verwijderen. Kies de actie die u wilt uitvoeren en druk op Verder om door te gaan."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is al geïnstalleerd.\nKies de actie die u wilt uitvoeren en druk op Verder om door te gaan."
StrCpy$INIT_UNINSTALLER_RUNNING"De uninstaller is al gestart."
StrCpy$INIT_UNINSTALLER_RUNNING"De uninstaller is al gestart."
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$SectionGroup_Shortcuts"Snelkoppelingen"
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_QUICK_LAUNCH_Desc"Quick Launch shortcut for ${APPLICATION_NAME}."
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$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Leitud protsess(id) ${processName} mis tuleks peatada. $\nKas soovid, et installer seiskaks need?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"${APPLICATION_EXECUTABLE} protsessi lõpetamine."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Ei leitud protsessi, mida tappa!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Ei leitud protsessi, mida tappa!"
StrCpy$PageReinstall_NEW_Field_1"Üks vanem versioon ${APPLICATION_NAME} on juba paigaldatud. On soovitav see eemaldada enne uue paigaldamist. Vali tehtav toiming ning kliki Jätka."
StrCpy$PageReinstall_NEW_Field_2"Eemalda enne paigaldamist"
StrCpy$PageReinstall_NEW_Field_2"Eemalda enne paigaldamist"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Vali, kuidas sa soovid paigaldada ${APPLICATION_NAME}."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Vali, kuidas sa soovid paigaldada ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Uuem versioon ${APPLICATION_NAME} on juba paigaldatud! Vanema versiooni paigaldus ei ole soovitatav. Kui tõesti tahad paigaldada vanemat versiooni, siis on parem esmalt eemaldada olemasolev. Vali tehtav toiming ning kliki Jätka."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} on juba paigaldatud.\nVali tehtav toiming ning kliki Jätka."
StrCpy$UAC_ERROR_ELEVATE"Ei suuda ülendada õigusi, viga: "
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"See paigaldaja vajab admini ligipääsu, proovi uuesti"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"See paigaldaja vajab admini ligipääsu, proovi uuesti"
StrCpy$INIT_INSTALLER_RUNNING"Paigaldaja on juba käimas."
StrCpy$INIT_INSTALLER_RUNNING"Paigaldaja on juba käimas."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"See desinstallija vajab admini ligipääsu, proovi uuesti"
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"See desinstallija vajab admini ligipääsu, proovi uuesti"
StrCpy$INIT_UNINSTALLER_RUNNING"See desinstallija on juba käimas"
StrCpy$INIT_UNINSTALLER_RUNNING"See desinstallija on juba käimas"
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$SectionGroup_Shortcuts"Viidad"
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$OPTION_SECTION_SC_SHELL_EXT_SECTION"Status icons for Windows Explorer"
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$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installing status icons for Windows Explorer"
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$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"بله، این پوشه داده را حذف کن."
StrCpy$UNINSTALLER_FILE_Detail"نوشتن حذف کننده"
StrCpy$UNINSTALLER_FINISHED_Detail"اتمام"
StrCpy$INIT_INSTALLER_RUNNING"نصاب از قبل در حال اجراست."
StrCpy$INIT_UNINSTALLER_RUNNING"حذف کننده از قبل در حال اجراست."
StrCpy$SectionGroup_Shortcuts"میانبرها"
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_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_NEW_Field_2"Uninstall before installing"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Choose how you want to install ${APPLICATION_NAME}."
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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Havaittiin sovelluksen ${APPLICATION_EXECUTABLE} prosessi (tai prosesseja) jotka pitäisi pysäyttää.\nHaluatko että asennusohjelma pysäyttää nämä puolestasi?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Tapettavaa prosessia ei löytynyt!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Tapettavaa prosessia ei löytynyt!"
StrCpy$PageReinstall_NEW_Field_1"Vanhempi versio sovelluksesta ${APPLICATION_NAME} on jo asennettu. On suositeltavaa että poistat vanhan asennuksen ensin. Valitse mikä toiminto suoritetaan ja napsauta Seuraava jatkaaksesi."
StrCpy$PageReinstall_NEW_Field_2"Poista ennen asentamista"
StrCpy$PageReinstall_NEW_Field_2"Poista ennen asentamista"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Valitse miten ${APPLICATION_NAME} asennetaan."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Valitse miten ${APPLICATION_NAME} asennetaan."
StrCpy$PageReinstall_OLD_Field_1"Uudempi versio sovelluksesta ${APPLICATION_NAME} on jo asennettu! Vanhan version asennus ei ole suositeltavaa. Jos todella haluat asentaa vanhemman version, kannattaa poistaa nykyisen version asennus ensin. Valitse minkä toimenpiteen haluat suorittaa ja paina Seuraava jatkaaksesi."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} on jo asennettu.\nValitse suoritettava toimenpide ja napsauta Seuraava jatkaaksesi."
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$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$UNINSTALL_ABORT"Poistaminen keskeytettiin käyttäjän toimesta"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Tämä asennusohjelma vaatii ylläpitäjän oikeudet, yritä uudelleen."
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$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$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$INIT_UNINSTALLER_RUNNING"Poisto-ohjelma on jo käynnissä."
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_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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Montrer les notes de version"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Le(s) processus en cours d’exécution ${APPLICATION_EXECUTABLE} doit être stoppé afin de poursuivre.$\nVoulez-vous que le programme d’installation s’en 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$PageReinstall_NEW_Field_2"Désinstaller avant d'installer à nouveau"
StrCpy$PageReinstall_NEW_Field_3"Ne pas désinstaller"
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_2"Ajouter/Réinstaller des composants"
StrCpy$PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE"Choisir l'option de maintenance à appliquer."
StrCpy$SEC_APPLICATION_DETAILS"Installer les essentiels de ${APPLICATION_NAME}."
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_DESKTOP_SECTION"Raccourci Bureau"
StrCpy$OPTION_SECTION_SC_DESKTOP_DetailPrint"Créer un raccourci 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_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}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Raccourci de lancement rapide de ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Supprimer de cet ordinateur le dossier de données de ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Voulez-vous supprimer le dossier de données de ${APPLICATION_NAME} ?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Laisser non-coché pour garder le dossier de données pour un usage ultérieur. Cocher pour supprimer le dossier de données."
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_ABORT"Désinstallation interrompue par l'utilisateur"
StrCpy$INIT_NO_QUICK_LAUNCH"Raccourci de lancement rapide (N/A)"
StrCpy$INIT_NO_DESKTOP"Raccourci bureau (remplace l’existant)"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Amosar as notas de publicación"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Amosar as notas de publicación"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Atopouse o proceso ${APPLICATION_EXECUTABLE} que ten que ser detido.$\nQuere que sexa o instalador quen o deteña?"
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_KILLING_PROCESSES_TEXT"Matando os procesos ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Non se atopou o proceso para matalo!"
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 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$ConfirmEndProcess_MESSAGEBOX_TEXT"${APPLICATION_EXECUTABLE} Prozess(e) müssen gestoppt werden.$\nWollen Sie diese nun stoppen?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"${APPLICATION_EXECUTABLE} Prozess(e) gefunden, die gestoppt werden müssen.$\nWollen Sie, dass der Installer diese nun für Sie stoppt?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Prozess zum Beenden nicht gefunden!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Prozess zum Beenden nicht gefunden!"
StrCpy$PageReinstall_NEW_Field_1"Eine ältere Version von ${APPLICATION_NAME} ist auf Ihrem System installiert. Es wird empfohlen, diese Version zunächst zu entfernen. Wählen Sie unter folgenden Vorgehenweisen und wählen Sie $\"Weiter$\"."
StrCpy$PageReinstall_NEW_Field_1"Eine ältere Version von ${APPLICATION_NAME} ist auf Ihrem System installiert. Es wird empfohlen, diese Version zunächst zu entfernen. Wählen Sie unter folgenden Vorgehenweisen und wählen Sie $\"Weiter$\"."
StrCpy$PageReinstall_NEW_Field_2"Vor der Installation entfernen"
StrCpy$PageReinstall_NEW_Field_2"Vor der Installation entfernen"
StrCpy$UNINSTALL_MESSAGEBOX"Es scheint, als ob ${APPLICATION_NAME} nicht im Verzeichnis '$INSTDIR' installiert ist.$\n$\nTrotzdem fortfahren (nicht empfohlen)?"
StrCpy$UNINSTALL_MESSAGEBOX"Es scheint, als ob ${APPLICATION_NAME} nicht im Verzeichnis '$INSTDIR' installiert ist.$\n$\nTrotzdem fortfahren (nicht empfohlen)?"
StrCpy$UNINSTALL_ABORT"Deinstallation vom Benutzer abgebrochen"
StrCpy$UNINSTALL_ABORT"Deinstallation vom Benutzer abgebrochen"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Βρέθηκε η(οι) διεργασία(ες) ${APPLICATION_EXECUTABLE} η(οι) οποία(ες) θα πρέπει να τερματιστεί(ούν).$\nΘα θέλατε να την(τις) τερματίσει ο βοηθός εγκατάστασης για εσάς;"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Δεν βρέθηκε διεργασία για βίαιο τερματισμό!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Δεν βρέθηκε διεργασία για βίαιο τερματισμό!"
StrCpy$PageReinstall_NEW_Field_1"Μια παλαιότερη έκδοση της ${APPLICATION_NAME} είναι εγκατεστημένη στο σύστημά σας. Είναι προτεινόμενο να απεγκαταστήσετε την τρέχουσα έκδοση πριν την εγκατάσταση. Επιλέξτε τη διαδικασία που επιθυμείτε να εκτελέσετε και πατήστε Επόμενο γιανα συνεχίσετε."
StrCpy$PageReinstall_NEW_Field_2"Απεγκατάσταση πριν την εγκατάσταση"
StrCpy$PageReinstall_NEW_Field_2"Απεγκατάσταση πριν την εγκατάσταση"
StrCpy$PageReinstall_NEW_Field_3"Να μην απεγκατασταθεί"
StrCpy$PageReinstall_NEW_Field_3"Να μην απεγκατασταθεί"
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\nΕπιλέξτε τη διαδικασία που επιθυμείτε να εκτελέσετε και επιλέξτε Επόμενο γιανα συνεχίσετε."
StrCpy$PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE"Επιλέξτε την επιλογή συντήρησης που θα πραγματοποιηθεί."
StrCpy$UNINSTALLER_FINISHED_Detail"ÏëïêëÞñùóç"
StrCpy$SEC_APPLICATION_DETAILS"Εγκατάσταση βάσης ${APPLICATION_NAME} σε εξέλιξη."
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$OPTION_SECTION_SC_SHELL_EXT_SECTION"Εικονίδια κατάστασης για την Εξερεύνηση των Windows"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Εγκατάσταση εικονιδίων κατάστασης στην Εξερεύνηση των Windows"
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$OPTION_SECTION_SC_START_MENU_SECTION"Συντόμευση στο Αρχικό Μενού"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Choose how you want to install ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_START_MENU_DetailPrint"Προσθήκη συντόμευσης για την ${APPLICATION_NAME} στο Αρχικό Μενού."
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$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_DESKTOP_DetailPrint"Δημιουργία Συντομεύσεων στην Επιφάνεια Εργασίας"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Αφήστε κενό γιανα διατηρήσετε τον φάκελο δεδομένων για μελλοντική χρήση ή επιλέξτε γιανα διγράψετε το φάκελο δεδομένων."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Desktop shortcut for ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_REGISTRY_Detail"Εγγραφή Κλειδιών μητρώου (Registry) της Εφαρμογής Εγκατάστασης"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Quick Launch shortcut for ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_FINISHED_Detail"Ολοκληρώθηκε"
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Remove ${APPLICATION_NAME}'s data folder from your computer."
StrCpy$UNINSTALL_MESSAGEBOX"Δεν φαίνεται να είναι εγκατεστημένηη η ${APPLICATION_NAME} στον κατάλογο '$INSTDIR'.$\n$\nΣυνέχιση παρ' όλα αυτά (δεν συνίσταται);"
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Do you want to delete ${APPLICATION_NAME}'s data folder?"
StrCpy$UNINSTALL_ABORT"Η απεγκατάσταση ματαιώθηκε από το χρήστη"
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$UAC_INSTALLER_REQUIRE_ADMIN"Αυτή η εφαρμογή εγκατάστασης απαιτεί πρόσβαση διαχειριστή, δοκιμάστε ξανά"
StrCpy$INIT_UNINSTALLER_RUNNING"Az eltávolító már fut."
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_KILL_NOT_FOUND_TEXT"Process to kill not found!"
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$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$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$UAC_ERROR_ELEVATE"Unable to elevate, error:"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostra le note di rilascio"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostra le note di rilascio"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Trovati ${APPLICATION_EXECUTABLE} processi che dovrebbero essere fermati.$\nVuoi che il programma di installazione li fermi al posto tuo?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Il processo da terminare non è stato trovato!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Il processo da terminare non è stato trovato!"
StrCpy$PageReinstall_NEW_Field_1"Una versione più datata di ${APPLICATION_NAME} è installata sul tuo sistema. Si consiglia di disinstallare la versione attuale prima di installare. Seleziona l'operazione da eseguire e fai clic su Avanti per continuare."
StrCpy$PageReinstall_NEW_Field_2"Disinstalla prima di installare"
StrCpy$PageReinstall_NEW_Field_2"Disinstalla prima di installare"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Scegli come desideri installare ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una versione più recente di ${APPLICATION_NAME} è già installata! Non è consigliabile installare una versione più vecchia. Se vuoi davvero installare una versione più vecchia, ti consigliamo di rimuovere prima la versione attuale. Scegli l'operazione da eseguire e fai clic su Avanti per continuare."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} è già installato.\nSeleziona l'operazione che desideri eseguire e fai clic su Avanti per continuare."
StrCpy$PageReinstall_SAME_Field_2"Aggiungi/Reinstalla i componenti"
StrCpy$PageReinstall_SAME_Field_2"Aggiungi/Reinstalla i componenti"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint"Creazione della scorciatoia dell'avvio veloce"
StrCpy$OPTION_SECTION_SC_APPLICATION_Desc"Oggetti fondamentali di ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_START_MENU_Desc"Scorciatoia di ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Scorciatoia del desktop per ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Scorciatoia per ${APPLICATION_NAME} dell'avvio veloce."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Rimuovi la cartella dei dati di ${APPLICATION_NAME} dal tuo computer."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Rimuovi la cartella dei dati di ${APPLICATION_NAME} dal tuo computer."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Vuoi eliminare la cartella dei dati di ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Vuoi eliminare la cartella dei dati di ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Lasciala smarcata per conservare la cartella dei dati per usi futuri o marcala per eliminarla."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Sì, elimina questa cartella di dati."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Sì, elimina questa cartella di dati."
StrCpy$UNINSTALLER_FILE_Detail"Creazione del programma di disinstallazione"
StrCpy$UNINSTALLER_REGISTRY_Detail"Scrittura delle chiavi di registro del programma di installazione"
StrCpy$UNINSTALLER_FINISHED_Detail"Completato"
StrCpy$UNINSTALLER_FINISHED_Detail"Completato"
StrCpy$UNINSTALL_MESSAGEBOX"Non sembra che ${APPLICATION_NAME} sia installato nella cartella '$INSTDIR'.$\nVuoi continuare comunque (non consigliato)?"
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$INIT_NO_DESKTOP"Scorciatoia del desktop (sovrascrivi se esistente)"
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_NEW_MUI_HEADER_TEXT_SUBTITLE"Choose how you want to install ${APPLICATION_NAME}."
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Il programma di installazione necessita delle credenziali di amministrazione, riprova"
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$INIT_INSTALLER_RUNNING"Il programma di installazione è già in esecuzione."
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$UAC_UNINSTALLER_REQUIRE_ADMIN"Il programma di disinstallazione necessita delle credenziali di amministrazione, riprova"
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
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$SectionGroup_Shortcuts"ショートカット"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Choose how you want to install ${APPLICATION_NAME}."
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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Remove ${APPLICATION_NAME}'s data folder from your computer."
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$UAC_ERROR_ELEVATE"Unable to elevate, error:"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Pokaż informacje o wydaniu"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Proces ${APPLICATION_EXECUTABLE} musi zostać zatrzymany $\nCzy chcesz aby instalator zatrzymał je dla ciebie?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Zamykam proces ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Nie znaleziono procesu!"
StrCpy$PageReinstall_NEW_Field_1"W Twoim systemie jest zainstalowana starsza wersja ${APPLICATION_NAME}. Zalecane jest jej usunięcie przed dalszą instalacją. Wybierz operację którą chcesz wykonać i naciśnij przycisk Dalej."
StrCpy$PageReinstall_NEW_Field_2"Odinstaluj przed instalacja"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Wybierz jak chcesz zainstalować ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Zainstalowana jest nowsza wersja ${APPLICATION_NAME}! Niezalecane jest instalowanie starszej wersji. Jeśli naprawdę chcesz zainstalować starszą wersję lepiej najpierw odinstalować obecną aplikację. Wybierz operację którą chcesz wykonać i naciśnij przycisk Dalej."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} jest już zainstalowany.\nWybierz operację którą chcesz wykonać i naciśnij przycisk Dalej."
StrCpy$UNINSTALLER_REGISTRY_Detail"Tworzę wpisy w rejestrze"
StrCpy$UNINSTALLER_FINISHED_Detail"Zakończony"
StrCpy$UNINSTALL_MESSAGEBOX"Nie wygląda na to że ${APPLICATION_NAME} jest zainstalowane w katalogu '$INSTDIR'.$$ Kontynuować mimo tego (nie zalecane)?"
StrCpy$UNINSTALL_ABORT"Dezinstalacja przerwana przez użytkownika"
StrCpy$INIT_NO_QUICK_LAUNCH"Skrót na Pasku Zadań (NIE DOTYCZY)"
StrCpy$INIT_NO_DESKTOP"Skróty na pulpicie (nadpisuje obecne)"
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_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$PageReinstall_NEW_Field_2"Desinstalar antes de instalar"
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_SAME_Field_1"${APPLICATION_NAME} ${VERSION} já está instalado.\nSelecione a operação que deseja fazer, e clique Seguinte para continuar."
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar notas de lançamento"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar notas de lançamento"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Encontrados ${APPLICATION_EXECUTABLE} processo(s) que precisam ser interrompidos. $ \nVocê quer que o instalador pare estes para você?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Encontrados ${APPLICATION_EXECUTABLE} processo(s) que precisam ser interrompidos.$\nVocê quer que o instalador pare esses processos para você?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Processo para eliminar não encontrado!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Processo para eliminar não encontrado!"
StrCpy$PageReinstall_NEW_Field_1"Uma versão mais antiga de ${APPLICATION_NAME} está instalado em seu 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_1"Uma versão mais antiga de ${APPLICATION_NAME} está instalado em seu 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_2"Desinstalar antes de instalar"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Escolha como você deseja instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Escolha como você deseja instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"A versão mais recente do ${APPLICATION_NAME} já está instalado! Não é recomendado que você instale uma versão mais antiga. Se você realmente deseja instalar esta versão mais antiga, é melhor desinstalar a versão atual primeiro. Selecione a operação que deseja executar e clique em Avançar para continuar."
StrCpy$PageReinstall_OLD_Field_1"A versão mais recente do ${APPLICATION_NAME} já está instalado! Não é recomendado que você instale uma versão mais antiga. Se você realmente deseja instalar esta versão mais antiga, é melhor desinstalar a 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 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 executar e clique em Avançar para continuar."
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_MUI_HEADER_TEXT_SUBTITLE"Выберите, как вы хотите установить ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Новая версия ${APPLICATION_NAME} уже установлена! Не рекомендуется устанавливать старую версию. Если вы действительно хотите, чтобы устанавливать старую версию, лучше удалить текущую версию. Выберите операцию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} уже установлена.\nВыберите операцию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy$UNINSTALL_MESSAGEBOX"Скорее всего, приложение ${APPLICATION_NAME} уже установлено в директорию '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Zobrazi<EFBFBD> zoznam zmien"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Zobrazi<EFBFBD> zoznam zmien"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Našli sa ${APPLICATION_EXECUTABLE} proces (y), ktoré je potrebné zastavi<76>.$\nChcete, aby ich inštalátor zastavil?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Našli sa ${APPLICATION_EXECUTABLE} proces (y), ktoré je potrebné zastavi<76>.$\nChcete, aby ich inštalátor zastavil?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proces ukonèenia nebol nájdený!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proces ukonèenia nebol nájdený!"
StrCpy$PageReinstall_NEW_Field_1"Staršia verzia ${APPLICATION_NAME} je nainštalovaná vo vašom systéme. Odporúèam vám odinštalova<76> aktuálnu verziu pred inštaláciou. Vyberte operáciu, ktorú chcete vykona<6E>, a kliknite na tlaèidlo Ïalej pre pokraèovanie."
StrCpy$PageReinstall_NEW_Field_1"Staršia verzia ${APPLICATION_NAME} je nainštalovaná vo vašom poèítaèi. Odporúèam vám odinštalova<76> aktuálnu verziu pred inštaláciou. Vyberte operáciu, ktorú chcete vykona<6E>, a kliknite na tlaèidlo Ïalej pre pokraèovanie."
StrCpy$PageReinstall_NEW_Field_2"Odinštalova<EFBFBD> pred inštaláciou"
StrCpy$PageReinstall_NEW_Field_2"Odinštalova<EFBFBD> pred inštaláciou"
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Zástupca na ploche pre ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Zástupca na ploche pre ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Zástupca na paneli úloh pre ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Zástupca na paneli úloh pre ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Zmaza<EFBFBD> dátový prieèinok ${APPLICATION_NAME}'s z vášho poèítaèa."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Zmaza<EFBFBD> dátový prieèinok ${APPLICATION_NAME}'s z vášho poèítaèa."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Naozaj chcete zmaza<7A> prieèinok s dátami ${APPLICATION_NAME}'s ?"
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Naozaj chcete zmaza<7A> prieèinok s dátami ${APPLICATION_NAME}'s ?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Ponechajte nezaškrtnuté, ak chcete prieèinok s dátami ponecha<68> na neskoršie použitie, alebo zaškrtnite, ak chcete prieèinok zmaza<7A>."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Áno, zmaza<7A> tento prieèinok."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Áno, zmaza<7A> tento prieèinok."
StrCpy$UNINSTALLER_REGISTRY_Detail"Zapisujem inštalaèné k¾úèe do registra"
StrCpy$UNINSTALLER_FINISHED_Detail"Dokonèené"
StrCpy$UNINSTALLER_FINISHED_Detail"Dokonèené"
StrCpy$UNINSTALL_MESSAGEBOX"Nezdá sa, že ${APPLICATION_NAME} je nainštalovaný v prieèinku '$INSTDIR'.$\n$\nNapriek tomu pokraèova<76> (neodporúèa sa)?"
StrCpy$UNINSTALL_MESSAGEBOX"Nezdá sa, že ${APPLICATION_NAME} je nainštalovaný v prieèinku '$INSTDIR'.$\n$\nNapriek tomu pokraèova<76> (neodporúèa sa)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Pokaži opombe k objavi"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Pokaži opombe k objavi"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Zaznana so dejavna opravila programa ${APPLICATION_EXECUTABLE}, ki pa morajo biti pred nadaljevanjem zaustavljena.$\nAli želite izvajanje teh dejanj končati?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Poteka zaustavljanje opravil programa ${APPLICATION_EXECUTABLE}"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Opravila, določenega za uničenje, ni mogoče najti!"
StrCpy$PageReinstall_NEW_Field_1"Nameščena je starejša različica ${APPLICATION_NAME}. Priporočljivo je najprej odstraniti obstoječo namestitev in šele nato namestiti novo. Izberite ustrezno možnost in kliknite za nadaljevanje."
StrCpy$PageReinstall_NEW_Field_2"Pred namestitvijo je treba obstoječo različico odstraniti"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"Program je že nameščen"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"Program je že nameščen"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Izberite način namestitve programa ${APPLICATION_NAME}."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Izberite način namestitve programa ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Novejša različica programa ${APPLICATION_NAME} je že nameščena! Ni priporočljivo namestiti starejše. V kolikor želite vseeno nadaljevati z namestitvijo, prej odstranite obstoječo različico. Izberite opravilo in pritisnite gumb za nadaljevanje."
StrCpy$PageReinstall_SAME_Field_1"Program ${APPLICATION_NAME} ${VERSION} je že nameščen. Izberite opravilo in pritisnite gumb za nadaljevanje."
StrCpy$UNINSTALLER_FILE_Detail"Zapisovanje programa za odstranjevanje namestitve"
StrCpy$UNINSTALLER_REGISTRY_Detail"Poteka zapisovanje namestilnika v register"
StrCpy$UNINSTALLER_FINISHED_Detail"Končano"
StrCpy$UNINSTALLER_FINISHED_Detail"Končano"
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$UNINSTALL_MESSAGEBOX"Ni videti, da bi bil program ${APPLICATION_NAME} nameščen v mapi '$INSTDIR'.$\n$\nAli želite vseeno nadaljevati (ni priporočeno)?"
StrCpy$UNINSTALL_ABORT"Odstranjevanje namestitve je bilo prekinjeno s strani uporabnika"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Process to kill not found!"
StrCpy$INIT_NO_QUICK_LAUNCH"Bližnjica za hiter dostop (N/A)"
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$INIT_NO_DESKTOP"Bližnjica namizja (obstajajo predmeti za prepis)"
StrCpy$PageReinstall_NEW_Field_2"Uninstall before installing"
StrCpy$UAC_ERROR_ELEVATE"Ni mogoče dvigniti; napaka:"
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$UAC_INSTALLER_REQUIRE_ADMIN"Namestilnik zahteva skrbniška dovoljenja."
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$INIT_INSTALLER_RUNNING"Namestilnik je že zagnan."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar las notas de la versión"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar las notas de la versión"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Se encontró el proceso(s) ${APPLICATION_EXECUTABLE} el cual necesita detenerse. $\n¿Desea que el instalador lo detenga por usted?"
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"Terminando los procesos de ${APPLICATION_EXECUTABLE}"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"¡Proceso a detener no encontrado!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"¡Proceso a 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_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_2"Desinstalar antes de instalar"
StrCpy$UNINSTALL_MESSAGEBOX"Parece que ${APPLICATION_NAME} no está instalado en el directorio '$INSTDIR'.$$ ¿Continuar de todos modos? (No Recomendado)"
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$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"Acceso Directo al Lanzador 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_ERROR_ELEVATE"No se ha podido elevar, Error:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"El instalador requiere acceso administrativo, intente de nuevo"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"El instalador requiere acceso administrativo, intente de nuevo"
StrCpy$INIT_INSTALLER_RUNNING"El instalador ya se encuentra en ejecución"
StrCpy$INIT_INSTALLER_RUNNING"El instalador ya se encuentra en ejecución"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar notas de la versión"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Parando el proceso ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proceso a detener no encontrado!"
StrCpy$PageReinstall_NEW_Field_1"Una versión anterior de ${APPLICATION_NAME} esta instalada en el sistema. Es recomendado que quite esta versión antes de instalar. Elija la operación a realizar y seleccione Siguiente para continuar."
StrCpy$PageReinstall_NEW_Field_2"Des-instale antes de Instalar."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Elija como desea instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una versión mas reciente de ${APPLICATION_NAME} esta actualmente instalada! No es recomendado que instale una versión antigua. Si realmente desea instalar esta versión obsoleta, es mejor que des-instale la versión actual primero. Seleccione la operación que desea realizar y presione en Siguiente para continuar. "
StrCpy$UNINSTALLER_REGISTRY_Detail"Escribiendo claves de Registro del Instalador"
StrCpy$UNINSTALLER_FINISHED_Detail"Terminado"
StrCpy$UNINSTALL_ABORT"Des-instalación abortada por el usuario"
StrCpy$INIT_NO_DESKTOP"Acceso Directo en Escritorio (Sobrescribe existentes)"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Este instalador requiere acceso Administrador, intente de nuevo. "
StrCpy$INIT_INSTALLER_RUNNING"El instalador ya esta corriendo."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Este des-instalador requiere acceso administrador, intente de nuevo"
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_QUICK_LAUNCH_Desc"Quick Launch shortcut for ${APPLICATION_NAME}."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Hittade ${APPLICATION_EXECUTABLE} process(er) som behöver stoppas.$\nVill du att installationsprogrammet ska stoppa dessa åt dig?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Processen att döda hittades inte!"
StrCpy$PageReinstall_NEW_Field_1"En tidigare version av ${APPLICATION_NAME} är installerad på ditt system. Det är rekommenderat att du avinstallerar den nuvarande versionen före installation. Välj den åtgärd du vill utföra och klicka Nästa för att fortsätta."
StrCpy$PageReinstall_NEW_Field_2"Avinstallera före installation"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Välj hur du vill installera ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"En nyare version av ${APPLICATION_NAME} är redan installerad! Det rekommenderas inte att du installerar en äldre version. Om du verkligen vill installera denna äldre versionen, är det bättre att du avinstallerar den nuvarande versionen först. Välj den åtgärd du vill utföra och klicka Nästa för att fortsätta."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} är redan installerad.\nVälj den åtgärd du vill utföra och klicka Nästa för att fortsätta."
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Durdurulması gereken ${APPLICATION_EXECUTABLE} süreci bulunuyor.$\nYükleyicinin bunu sizin için yapmasını ister misiniz?"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Durdurulması gereken ${APPLICATION_EXECUTABLE} süreçleri bulundu.$\nYükleyicinin bunları sizin için durdurmasını ister misiniz?"
StrCpy$PageReinstall_NEW_Field_1"${APPLICATION_NAME} önceki sürümü sisteminizde yüklü. Kurulumdan önce bunu kaldırmanız önerilir. Yapmak istediğiniz işlemi seçip devam etmek için İleri tıklayın."
StrCpy$PageReinstall_NEW_Field_1"${APPLICATION_NAME} önceki sürümü sisteminizde yüklü. Kurulumdan önce bunu kaldırmanız önerilir. Yapmak istediğiniz işlemi seçip devam etmek için İleri tıklayın."
StrCpy$PageReinstall_NEW_Field_2"Yüklemeden önce kaldır"
StrCpy$PageReinstall_NEW_Field_2"Yüklemeden önce kaldır"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"${APPLICATION_NAME} uygulamasını nasıl yüklemek istediğinizi seçin."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"${APPLICATION_NAME} uygulamasını nasıl yüklemek istediğinizi seçin."
StrCpy$PageReinstall_OLD_Field_1"${APPLICATION_NAME} uygulamasının daha yeni sürümü zaten yüklü! Daha eski bir sürümünü yüklemeniz önerilmez. Gerçekten bu eski sürümü yüklemek isterseniz, ilk olarak geçerli sürümü kaldırmanız tavsiye edilir. Yapmak istediğiniz işlemi seçin ve devam etmek üzere İleri tıklayın."
StrCpy$PageReinstall_OLD_Field_1"${APPLICATION_NAME} uygulamasının daha yeni sürümü zaten yüklü! Daha eski bir sürümünü yüklemeniz önerilmez. Gerçekten bu eski sürümü yüklemek isterseniz, ilk olarak geçerli sürümü kaldırmanız tavsiye edilir. Yapmak istediğiniz işlemi seçin ve devam etmek üzere İleri tıklayın."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} zaten yüklü.\nYapmak istediğiniz işlemi seçin ve devam etmek için İleri tıklayın."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} zaten yüklü.\n\nYapmak istediğiniz işlemi seçin ve devam etmek için İleri tıklayın."
message(STATUS"Unable to find a related icon that matches pattern ${pattern} for variable ${appsources} - application will not have an application icon!")
message(STATUS"Unable to find a related icon that matches pattern ${pattern} for variable ${appsources} - application will not have an application icon!")
endif(_icons)
endif(_icons)
else(PNG2ICO_EXECUTABLEANDWINDRES_EXECUTABLE)
else(PNG2ICO_EXECUTABLEANDWINDRES_EXECUTABLE)
message(FATAL_ERROR"Unable to find the png2ico or windres utilities - application will not have an application icon!")
message(WARNING"Unable to find the png2ico or windres utilities - application will not have an application icon!")
endif(PNG2ICO_EXECUTABLEANDWINDRES_EXECUTABLE)
endif(PNG2ICO_EXECUTABLEANDWINDRES_EXECUTABLE)
endif(WIN32)
endif(WIN32)
if(Q_WS_MAC)
if(APPLE)
# first convert image to a tiff using the Mac OS X "sips" utility,
# first convert image to a tiff using the Mac OS X "sips" utility,
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the names of Kitware, Inc., the Insight Software Consortium, nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
macro_log_feature(QT4_FOUND"Qt""A cross-platform application and UI framework""http://qt.nokia.com"TRUE"""If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too")
macro_log_feature(QT4_FOUND"Qt""A cross-platform application and UI framework""http://www.qt-project.org"TRUE"""If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too")
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.