A space at the start of the bullet point about "Locate and open the following file" seems to be causing that bullet point to not line up nicely on the rendered page.
Some "downloading" that should be "uploading".
Some bullet points with "code" items were rendering with bold, italics on the published page. These seemed to be bullet points that had 3 spaces at the start of their 2nd line of text. Other bullet points that rendered correctly had only 2 spaces. So I removed the extra space. I hope it renders nicely in the published form - it is a bit hard to know in the GitHub Preview, because that is trying to show change-sidebars and differences also.
- Invert icon color depending on the darkness of the theme
- Ensure icons and colors are changed when theme or colors
get changed during application run
Final patch for #3582
Because that's what's going on. A job can 'complete an item' or 'finish'.
Note that several jobs could complete the same item: a new directory
will complete on the PropagateRemoteMkdir and the PropagateDirectory
jobs.
Previously, PropagateDirectory jobs didn't emit the completed() signal.
Now that they do, we need to make sure to not add extra lines to the
protocol widget for them.
To accomplish that, the jobCompleted() signal now also contains the job
that completed the item.
instead of pretending it suicceed and not recursing in it.
This fixes a bug in which a folder with a too long name would be properly
created, then removed on the server in the next sync.
(cherry picked from commit 4bbf7669091cde7ec726b1708d8c54427b68f016)
Conflicts:
csync/src/csync.h
csync/src/csync_exclude.h
csync/src/csync_update.c
When user wants to limit the bandwidth, he does not care about speed
anymore. And parallelism on slow network might cause problems.
For issue #3382
Will also help for #3095
(cherry picked from commit b20f29f22797367c7aa92bd74389c99b10c852a4)
csync_vio_local_unix.c:109:7: warning: ignoring return value of function declared with
warn_unused_result attribute [-Wunused-result]
asprintf(&file_stat->original_name, "%s/%s", handle->path, dirent->d_name);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This should allow for the case when a user has set the limit to 0 and a new empty folder appears on the server. The folder will have size 0 (no files in it). Doing the >= test here will mean that the user will be prompted about the new folder, which I think is the behaviour they would expect.
The side-effect of this change is that if the user has a limit of, for example, 10,000,000 and a new folder comes along with exactly 10,000,000 of content then they will now be prompted about it. Before the change such a new folder would have been auto-synced without prompting the user. I do not think this is a big deal - I cannot believe that users will be counting exact bytes for this limit, they are just setting a rough number of MB at the UI.
Should fix https://github.com/owncloud/client/issues/3542
Now that the client is pushing all changes of state, we don't need
to track the requested URLs anymore and risk that the way that we
reseted that list could leave a few entries in Finder's cache outdated.
We can remove the same code from other platforms in a later release,
a bit earlier than a week before beta1.
This fixes a few issues with the new FinderSync integration on OSX which
can't easily clear its status cache when receiving an UPDATE_VIEW message
except by unregistering the folder, but which causes flickering.
This fix should also make the regeneration of the cache unnecessary on other
platforms through possibly expensive RETRIEVE_FILE_STATUS commands.
To allow forwarding all OK states of sync jobs to the socket API
we need to make sure that the vector doesn't contain unneeded items.
This initially was intended to force updating the metadata for parent
folders, but since then the should_update_metadata flag check was
added both here and in PropagateDirectory::finalize where the metadata
is actually updated for parent folders. We can safely remove the inclusion
of all remote directory items.
The signal is emitted in this case if the instruction is NONE
but in the only ultimately connected slot to this signal,
SocketApi::slotSyncItemDiscovered, we return early according
to the same condition.
The emission of the same signal at the end of treewalkFile remains
and take care of the normal cases.
that does not understand nullptr
Note that we can't just replace nullptr by 0 in createIndex otherwise
it would be ambiguious.
So leave it commented to show that your intention is to create it with
a null pointer (which is the default because of the default parameter)
- Remove the copy constructor. The default constructor is fine. Having
a user defined copy constructor inhibit the move constructor.
- Pass QVariantMap arguments via const references
- Do not return a pointer to Capabilities from the account. It is a
value type and should not be used by pointer.
This makes sure that users won't have to go into settings
to activate the extension. This might upset users by forcing
them to re-disable it on each oC upgrade, but if this becomes
an issue we should then make this configurable in the client's
settings itself.
The owncloud wizard already created the directory, but the recent addition
of FolderMan::checkPathValidityForNewFolder stopped allowing unexisting directories.
So change FolderMan::checkPathValidityForNewFolder to allow non existing directory
and whange the FolderWizard to create the directory if it does not exist.
Issue #3492
To avoid us having to construct the URL for public shares just rely on the
server to do it.
This makes it easier to maintain. For example if (in the not do distat future)
the index.php part is removed the server would just server this new url.
Together with the updater timer, check on linux, if the version on the
disk has still the same version string as the one that is running. If
not, restart if nothing is currently syncing.
The proxyAuthenticationRequired() signal now goes to the
ProxyAuthHandler class. That class will try to read the proxy settings
from the keychain or ask the user about them.
We won't ask the user for credentials for explicitly configured proxies.
It also does not change how the credentials for explicitly configured
proxies are stored. (see #261)
especially at places where the file system is hit. APPLICATION_NAME
may contain colons and other strange chars. APPLICATION_SHORTNAME
has to be a clean name.
This fixes client#3445
That allows better handling of remove requests that should not be done
because the directory is not empty on the remote side (as it contains
ignored files).
In particular:
* It's always possible to sign out, even if there's currently a
network problem or the service is unavailable.
* You can only sign in when you explicitly signed out before.
If we have a slow connection we do now want to show the share checkbox until we
have retrieved the shares (so we know the state). Else we might try to enable
sharing on an already shared file.
Issue #3239
The feature to dynamically resize the column only came with Qt5,
But give a better default size of the name column so we can read the
contents.
factorize the function to check the validity of a new folder out of
the folder wizard to the FolderMan.
There is even a test for it now.
That way we can also use it in the normal wizard
This made no sens. Folders are setup when the account is setup.
Also this had the bad side effect to shut the sync engine too early,
leaving the SyncEngine::_syncRunning to true, and leading to ASSERT later
Issue #3427
Before we only had c_utf8_to_locale, but now functionality is needed to
convert a path to UNC before converting it. That does c_utf8_path_to_locale
now, while c_utf8_string_to_locale only converts the plain string, ie.
to generate wide char strings for output.
This enables the calling function to free these accordingly. That is needed
because the makeLongWinPath for efficiency reasons does not always realloc
the original string.
No such slot OCC::GeneralSettings::slotForceRemoteDiscoveryOnFolders()
(sender name: 'OCC__IgnoreListEditor')
(receiver name: 'OCC__GeneralSettings')
The slot was in another settings page (because the button 'edit ignored files'
was moved.
Move the actual code to IgnoreListEditor where it logically belong.
Add a comment on the why this code is there.
Issue #3413
There was two problem:
- First, when singing in we were setting an account that was connected
to disconnected (AccountState::State)
- Second, while getting the result from the ConnectionValidator, we would
not set the state to connected if the previous call to ConnectionValidator
was ConnectionValidator::Connected, regardless of the old state of the account
Users with accounts on multiple servers could easily use the same
username on both servers. The password dialog did not tell users
what server the password is for. I added the account name to the
dialog.
For unencrypted connections there used to be a small arrow indicating
that more information was available, but clicking the button had no
effect. That indicator is now gone because we unset the SslButton's
menu for these cases.
* Show connection errors for all failing accounts in the tooltip.
* Don't hide the 'service unavailable' state. We don't want intrusive
pop ups, but we don't want to pretend we're syncing when we aren't.
* Show sync-running icon also for SyncPrepare state. In my tests I
very rarely saw the sync-running icon before.
application.cpp still had a global folder syncing on/off switch
when an account connected or disconnected. That couldn't work with
multiaccount.
Instead FolderMan listens to accountStateChanged messages and
schedules or de-schedules the folders for accounts that change state.
- Make it translatable
- Make use of the %n so that it supports plurals (but this will only
take effect if we have an english translation)
- Only put two units. eg: "5 years 7 months" instead of
"5 years 7 months 12 days 34 minutes 23 seconds"
Even when it is "2 hours 23 minutes" the amount of second does not
matter, especially since the estimation is likely to be boggus anyway
Issues #2672 and #3097
That way we do not need to include QIcon in theme.h
So the header can be included (indirrectly) from cmd.cpp
which is not compiled with the QtGui include paths
Too many people complained about that the entry can not be removed
if this should be synced. Users that want that one be synced please
add it to the user exclude list.
This reverts commit 5860e5a46b.
This allows developers to build and run the extension by default.
Official packages bundles will be re-signed after the build, we
The SocketApi prefix can be set at configure time through cmake and
should match the key that will be used to sign the whole .app bundle
(including the embedded FindexSync .appex bundle).
Since we use that class to lookup the NSBundle using bundleForClass
use a more specific name to avoid any clash with any othe liferay
extension. I couldn't figure out from the documentation if that is
only resolved using the class name, but found some warnings on
stackoverflow and better be safe than sorry for what it costs.
The problem was that the modified ignore pattern was not applied
to the parts of the remote tree we simply retrieve from the db
because the folder etag didn't change.
Even worse, if one removed an ignore pattern, the un-ignored
files would not be synced correctly.
With this change, a modification to the ignore list always results
in a full remote discovery. This guarantees that we find un-ignored
files.
Since we periodically recreatet the QNAM owned by the Account,
the web view could end up holding a dangling pointer to it.
Let the web view use its own QNAM, but make sure that the cookie
jars are shared so that we can grab the session token given
by the server.
It was only used on OS X and couldn't be used by the FinderSync
extension since that one runs in a sandbox. So use the same system
to load images in the legacy extension by shipping them in the
extension bundle instead of the owncloud.app bundle.
This is also given that the legacy extension needs padded icons
while the FinderSync one needs unpadded icons.
Do not pass AccountState in constructor of Folder, set with a
new method called setAccountState after creation. Thus the
parameter does not need to be passed through all over.
Since GIT_SHA1 would need to be updated in config.h, all files
including it would be rebuilt by make.
Reduce the number of files to rebuild by moving this variable
to version.h instead.
The archive buildaction causes this. Use the default build while
forcing the Release configuration instead.
In both cases the result will end up in SYMROOT.
Theme will eventually be moved to the GUI
Theme::appNameGUI and QApplicaiton::applicationName are the same, it is currently
set in the constructor of ConfigFile
This uses the new official API to show overlay icons and add our
custom context menu entry instead of hooking directly into the
Finder process and intercept drawind routines.
A dummy desktopclient target is also in the project to allow debugging
directly in Xcode while the official client can be started from the
command line. Otherwise Xcode won't allow attaching to the debugee.
Dummy icon files have been added while we get proper icon produced.
We can't use the old icons since what we use for the legacy shell
integration is already padded according to where the badge should
appear on the full icon.
This prepares the switch to the official FinderSync API on Yosemite
which requires the extension to run in a sandbox. This complicates
the usage of a local socket to communicate with a non-sandboxed GUI
client. An NSConnection is easier to use in this case, which we can
use as long as the server name (i.e. Mach port registered name) is
prefixed with the code signing Team Identifier.
A placeholder server implementation is also added to the client's
SocketApi which basically reproduces the interface of a QLocalSocket.
Most of the references to individual sockets we're only using
QIODevice methods so the type was simply reduced. A typedef to
replace the QLocalServer was the only other part needed.
Since our DLLs version number aren't bumped, a same file size could
cause a DLL not to be installed to replace an old one.
This eventually can cause a crash of explorer if an incompatible version
of OCUtil.dll is installed alone.
Fix the issue by defining LIBRARY_IGNORE_VERSION. This also makes sure
that installing an old version of the client over a more recent one
if we decide to add version numbers to those DLLs.
All things pushed to the "coverity_scan" branch will now get build by Travis and the resulting binary is pushed to Coverity and analyzed automatically.
Since Coverity has a fair usage policy which allows us up to 8 builds per week with a maximum of 2 builds per day we cannot run this automatedly on every push. Which also doesn't make that much sense.
Currently this can be used by reating a "coverity_scan" branch and force-pushing the new code to analyze. If all went well the Travis build should pass and Coverity should display the new information (give it some time to process the build though). In Coverity the SHA of the processed build will be used as version number as well as descriptive text.
(we can automate this though in the future as well if we want that too)
This will fail at the moment on master since Qt4 builds are failing as per https://ci.owncloud.org/job/client-build-matrix-linux/ - probably something that should get fixed. 1.8 branch worked fine though.
In particular the 'unsupported client version' error message
is now visible to the user when trying to connect to a
server that no longer supports the current client version.
Removed the Worker postfix from the method names to reflect their non
threaded character, they moved into a thread in the Validator class.
Thanks ckamm for review.
* Change the textedit-empty text to be just "Password"
* Hide the 'Copy link' button when the share isn't created yet
* Show the checked and disabled 'Password required' checkbox
when a password is required.
For remote renames that are replicated locally the _file member is
overwritten by the target file name when the new entry is added to
the metadata table. Using _originalFile here guarantees that
the affected local file is mentioned.
this fixes the error and makes complete oCC compile with GCC 5.
error: ISO C does not support '__FUNCTION__' predefined identifier
[-Wpedantic]
According to the porting guide:
The fix is either to use the standard predefined identifier __func__
(since C99), or to use the __extension__ keyword.
Do not request the status of all entries in the cache. Instead force Finder
to request the ones that it deems necessary by keeping the old statuses
in a separate dictionary which are only used while the new status arrives.
removeIcons isn't called and clearFileNameCacheForPath was always
called with a "nil" path.
Remove the return value of askForIcon which was always 0, and use
that value explicitly at the only call site.
Remove the "-1" code path in iconByPath since setIcons prevents
-1 from getting into _fileNamesCache in all cases.
Since QNonContiguousByteDeviceThreadForwardImpl::reset will
call UploadDevice::reset with a BlockingQueuedConnection, this
allows us to reset the HTTP channel along with its buffers
before they get the chance to be reused with a subsequent request.
Do not request the status of all entries in the cache. Instead force
explorer to request the ones that it deems necessary by keeping the old
statuses in a separate dictionary which are only used while the new status
arrives.
If 1.8.0 caused missing data in the local tree, this patch gets it
back. For that, the usage of the journal for remote repository is
disabled at the first start.
When the local sync target is just a drive letter (e.g. "X:\"), neither
the display of the sync status via file icon overlay, nor the creation of a
share link works. In the latter case no pop-up comes up and no server
request is done.
QDir::cleanPath() usually removes trailing slashes, but not if the path to
be cleaned is just "X:\". In that case the trailing slash is kept. This
commit accounts for that exception.
The problem was that on network error the networkError() and
finishedWithError() signals both fired. To fix it, I collapse all
error handing into a slot triggered by finishedWithError().
I tested the redirection case and the invalid credentials case.
I had a situation here where we were showing stale desktop notifications when a remote folder
errored out and then sync finished with _syncResult data from previous sync.
Use a QSharedPointer to keep the same ownership and
continue passing the SyncFileItems as a const& when
ownership isn't taken. This allows sharing the same
allocations between the jobs and the result vectors.
This saves about 20MB of memory (off 120MB) once all
jobs are created.
Since the QLocalServer parent of the QLocalSockets gets destroyed
after the _listeners QList, onLostConnection might try to update
an already destroyed list.
Fix the issue by simply making sure that _localServer is destroyed
first.
Also, use the mirall version for ocsync.
Currently, the csync engine part and the Qt part have different UAs,
and this makes debugging (i.e. reading access logs) difficult. On
top, we haven't increased the ocsync version number in ages. So
as a consequence, I think it would be the best to have ocsync
and the rest share the same version number, and make them identify
with the same user agent.
To ease debugging for our side, we'll still append "(csyncoC)"
for calls made by csync.
For issue #3106
1) Always use the actual timestamp from the file in the file system
to create the conflict file. This is important because if one edit a
file several time, they should have different name. Also it makes more
sens to have the mtime of the modified file.
2) Give the correct size to the job so we know when the temporary file
is complete in case of resuming.
Because file system like FAT only have two second accuracy and would result
in a upload if the mtime in the database is not the same as the one that was
downloaded
Issue #3103
The AccountManager does not belong in the libsync because it is not
part of the synchronisation algorithm, but is just an helper class
for the UI to maintain the account and read/save the config
csync_reconcile.c:159:26: warning: address of array 'tmp->path' will always evaluate to 'true' [-Wpointer-bool-conversion]
if( tmp->path ) {
~~ ~~~~~^~~~
csync_file_stat_s::path is an array so it is never null
What was meant here is to check if the string was not empty
In some cryptic cases where the getetag property wasn't returned by
the server, we might be trying to c_strdup a null pointer in
csync_vio_file_stat_copy.
At least avoid crashing in this case by looking for
CSYNC_VIO_FILE_STAT_FIELDS_ETAG, like csync_vio_file_stat_destroy
does.
The default constructor of the iterator points to NULL, which makes
it != end() but invalid to dereference.
Use an integer index instead to keep 0 as a valid default value that
can always correctly be checked against size().
Also make sure that no data is shared between threads by making the
csync_vio_file_stat_t copyable and passing it as const.
Deleting the QLocalSocket while iterating the QList with qDeleteAll
would trigger onLostConnection, which would modify the list mid-air
and leave dangling pointers in it.
Calling save() in the CookieJar destructor was problematic. For instance
we sometimes create a new QNAM with a new CookieJar and then call
setCookieJar() on it to assign some other jar. That destroy the fresh
jar and potentially overwrite cookies.
Also explicitly saving the account's cookies when the account is saved
is more explicit and thus more reliable than counting on the Account
destructor to do it.
This is largely a guess, but this is the only place where we use
a QIODevice to push data through QNAM and that the QIODevice isn't
a direct child of the QNetworkReply.
Fix the issue by making sure that we don't go back to the event loop
and possibly handle network events between the destruction of the
upload QIODevice and the QNetworkReply, which might lead to QNAM
dereferencing a dangling QIODevice pointer.
Make sure that we define NDEBUG in all configurations.
Also remove inconsistent defines:
WIN32: We don't use
_DEBUG;_WINDOWS;_USRDLL: Should be defined by the compiler if necessary
OCCONTEXTMENU_EXPORTS: We currently don't use dllimport anyway
This also update the binary submodule with an updated build.
The QNetworkAccessManager is reset when we are disconnected, just
before attempting to fetch the server's status.php.
This may help fix the problem described in various issues where we
get 'Connection closed' or timeout errors after the OS has woken
from sleep.
Since each new connection to the socket API would trigger a broadcast
of REGISTER_PATH to all existing connections, opening the context menu
would trigger a SHChangeNotify call of the root directory through
the overlay icon extension, which is currently also connected to the
socket API, waiting for changes.
Fix the issue by sending the initial REGISTER_PATH automatic response
only to the connecting socket.
This moves the crash handler installation during the OCC::Application
contruction. This still leaves a window where crashes wouldn't be
caught, leaving the QtSingleApplication and theme initialization
code unreported, but isn't requiring any refactoring for now.
Issue #2952
It was not emitted when a removed folder finished its sync,
and that left the UI in an old state sometimes.
Removing the Folder explicitly is unnecessary as a QSignalMapper
will automatically remove mappings for deleted QObjects.
The config currently only disable the reporter, but still leaves
the crash handler installed on startup. This causes conflicts
when running those builds in lldb.
Work around the issue by requiring the crash reporter to be
disabled in the settings before owncloud can be run in lldb.
This has the negative side-effect of not covering the
initial ConfigFile loading with the crash handler.
Issue #2946
If a file or directory is shared without resharing permission, the
share dialog displays an error. This is not the optimal solution, but
best for now, as we do not have the permissions available for the file
manager plugin.
This fixes#2923
- Check the share checkbox automatically on open of the dialog
- Use the date picker with popping up calendar
- Proper initial size
- no resizing and appearing and disappearing.
Fixes probably #2917, also #2764
This attempts to replicate what i686-w64-mingw32-gen_sym_files
is doing for us with MinGW by parsing the output of otool -L
to get the library name actually used by the executable.
If the password or user was wrong during setup, the client showed a
ConnectionClosed error instead of a proper Username or password wrong
message. This was because in HTTPCredentials::slotAuthentication, the
reply is closed, and a property is set to indicate the auth problem.
This patch now checks at all occurences of networkErrors if it might
have been an authentication problem, and displays something useful.
There is a good chance that this is a sufficient fix for
owncloud/enterprise#556
Import a fix from libcrashreporter-qt that should remove
usage of symbols not available in XP's msvcrt.dll
This should help solving #2907 with the crash reporter enabled.
In order to initiate the conneciton, we should not send a GET on the
webdav URL because that is not a valid webdav command on a collection.
Issue #2911
QNetworkReply::OperationCanceledError may be both because of anthentication
error (because the HTTPCredentials abort the reply) or because of a timeout
(the timer abort the reply). We should only ask for the password if the
reply was canceled because the password was wrong.
QFileInfo has to be refreshed if the underlying file has been
modified in between. That is dangerous so ckamm and me decided
to eliminate the QFileInfo based implementations.
This was triggered by a bug that the client uploaded files that
it should not have.
sendMessage would only be called if there were options to
be sent to the running application.
Fix the issue by having explicitly named messages and always
send the show settings message.
Issue #2374
There is a race condition that can initialize the RemotePathChecker
instance concurrently on the same address and cause a crash when locking
the mutex. The reason is that local static initialization is not
thread-safe with MSVC2013.
Fix the issue by using call_once to initialize a static unique_ptr
instead.
This could be related to some reports of issue #2836.
The same file is on the two sync trees under different names in case of a rename
We must therefore use the rename target as the key in the _syncItemMap to ensure
that the trees are correctly merged.
Also use the same UTF-8 decoding for the target than for the actual file in order
to catch invalid utf-8 in the rename target
CMake is using "c++" as the compiler and the clang detection fails.
Since we require C++11 at this point, enable it in all cases.
Removed the MSVC todos since we don't plan supporting it yet.
The compilation error was
account.h:140:113: error: expected ')'
const QList< QPair<QString, QString> > &queryItems = QList< QPair<QString, QString> >());
^
followed by more errors.
The problem is because the compiler has hard time disambiguiating the comma
int foo(const QPair<int, int> &p = QPair<int, int>());
^
It is indeed quite hard for the compiler to know if this comma is a separation
between complate arguments or the separation between arguments of the functions.
Use the C++11 construct instead which does not need commas
50ms is sometimes not enough when the client is busy synchronizing.
Wait up to 500ms for the client to answer before we give up and show an
empty menu title.
Ideally we should request the title before the watched directory list, but
the list is currently sent implicitly on connect.
The context menu will now show "Share with ownCloud" instead of "Share" as
it does on other platforms.
This also updates the submodule to point to matching binaries.
The problem occurs because of the sorting of items when we have things like
bigfolder
bigfolder/bigsubfolder
bigfolder-2
Then, because dashes come before slash in ascii, the bigfolder-2 would come before its content
and the propagator would thinkg bigfolder is empty and save the etag before it is processed
Should fix issue #2832
That makes it defaulting to the APPLICATION_NAME which is ownCloud.
That is what we want and expect to read the system exclude file from
on linux.
How we find the system exclude file linux:
ConfigFile::excludeFileFromSystem()
-> Theme::instance()->appName()
-> OwncloudTheme::appName() returns "ownCloud"
-> default Theme::appName() returns APPLICATION_SHORTNAME
-> cmake installs to ${SYSCONFDIR}/${APPLICATION_SHORTNAME}
It seems like verclsid.exe hangs on our class IDs when invoked
through explorer.exe for 5-10 seconds. It doesn't hang if I
invoke the same command line from cmd.exe, so there could be some
process parameters that don't play well with our extra thread
or to the pipe connection that we do in it.
Delay creating the RemotePathChecker thread until the first
IsMemberOf call. verclsid.exe only seems to instantiate a object
of each registered class, without actually using them, so we
can use this as a workaround.
This should be fixing issue #2680.
* Fix various spaces vs tabs issues
* Rewrite
- to use instance variables consistently
- to not make shared state explicit instead of relying on
class variables of a common base
* Fix reconnecting to an oC client.
Occasionally on Windows ~DiscoveryMainThread() triggered a crash.
Probably because the QMutableLinkedListIterator was destroyed after
it's underlying data had been removed (from the map).
Cleaning up the map and lists was redundant anyway, so the
destructor is changed to only explicitly destroy the vio_file_stat
objects.
The _listeners list is destroyed before the _localServer.
And since _localServer is the parent of all generated QLocalSockets,
they get destroyed in turn - which triggers onLostConnection() and
thus accessed the destroyed _listeners list.
To avoid that, delete all active QLocalSockets in SocketApi before
its members are destructed.
We also now delete sockets when we're done with them. I think
disconnected sockets would otherwise linger until SocketApi destruction.
It make jenkins fail with the error:
CMake Error at CMakeLists.txt:3 (cmake_policy):
Policy "CMP0020" is not known to this version of CMake.
This reverts commit 6d380c8548.
Usefull when the folder does not exist (for example in case the theme
has a defaultServerFolder that does not yet exist, #2788)
But also to avoid confusion (issue #2663)
This crash was uncovered when testing parallel chunks when one chunk
finished the upload. The propagate was then finished with the other
UploadDevices still being in-flight in the QNAM.
There could be a race condition if the file was updated on the server
between the discovery and the propagate phase. By taking the mtime from
the server, we make sure that we do not have a race.
This is tested by t6.pl with BIG3.file because the script was modifying
the file between the two phases
We need to add the davPath in there.
Otherwise there will be a redirect which will break shiboleth
(We want to only enter the password once)
Issue #2739 and #2780
Windows finds DLLs using PATH or the directory of the process'
executable. By outputing those dependend DLLs together with
owncloud.exe, the developer only need to have OpenSSL's bin
and the qtkeychain build directory in his PATH to let the
dynamic linker find them.
As the documentation of RUNTIME_OUTPUT_DIRECTORY points out,
this only affects windows as other platforms don't consider
libraries as runtime targets.
- qtkeychain isn't necessarily in a qt5keychain subdirectory.
- Explicitly add OpenSSL to the include directories
- Make sure that the USE_OUR_OWN_SQLITE3 code is initialized
for csync by calling find_package.
Since Qt5.4, on release build, qDebug do not provide anymore the line
number unless we define QT_MESSAGELOGCONTEXT
Also define QT_USE_QSTRINGBUILDER while i'm on it (free optimisation)
When connecting to a https:// URL fails, present the user with three
choices:
* Try again with a http:// URL
* Configure client-side TLS certificates
* Go back and enter a different URL
This allows users connecting with an ownCloud server secured with
client-side TLS certificates to start the certificate import wizard
manually instead of relying on a custom server error message.
Otherwise we run into "can't upload because it's too recent" issues
when the folder watcher triggers a sync.
We used to do this, but my recent refactoring started counting the
time since the last sync against this minimum delay, leading to
1ms delays in practice. This fixes the regression.
To make the Sharedialog a bit cleaner and to only have the logic in one place.
The postdata is now passed as a QList<QPair<QString, QString>> to the
OcsShareJob.
* removed broken QSsl::SslV3 default
* rewrote slotHandleErrors(): no longer claim errors which are none.
* hack reverted: lib64 was not the cause for NixOS issues related to libraries.
* refactored csync/src/csync_owncloud.c and discovered+fixed why the dav_connect was never getting the certPath+certPassoword
* cleanup of code but seems this crushed the ssl client certificate support
* fixes the https://github.com/owncloud/client/issues/69#issuecomment-69358377 issue
* lots of cleanup
* From TODO list : translate all french comments into english
* changed _pemCertificate type from QString to QByteArray
- Some dialog changes: Made it less vertical space comsuming
- Some variable cleanups
- Allow to share files that are not within the synced dir by
copying them to the root of a sync dir first.
The server generates a new share when a password is set/deleted so we need to
refetch the shares once that is done.
It is not possible to set an expiration date in the past for a share. So do not
allow the user to select a date in the past.
There are several reason why start==0
* The Content-Range header was not present
* We can't parse it
* Or it is actually 0
If we can't parse it, we cannot assume anything and must error out.
So only in the first case we should discard the temporary file and continue.
Issue #2708
We must not use the SI units if we use power of 2
I believe that we should use SI units and power of 10
But since the server still use power of 2, we need to show the same numbers
But at least we use the proper standard IEC unit that are explicit
The password field now show correct info when a password is entered etc.
Maybe we should have an extra info part where we state that the user needs to
press enter to submit the password
This is a merge from the movie in the original commit (which was local) to the
QProgressIndicator. However, on all connections I tested it, it did not add
much since the API is in gernal pretty quick. So maybe we can just remove this.
This should solve #2675 and #1981
By preloading the chunks in memory before sending them, we don't keep the
file open and therefore we let other program open the file for writing.
If the file is modified between two chunks, we detect that and abort anyway
The server is slow to process each chunk. As a result the time between
the chunks is not neglectible. Therefore we gain a lot of time by
uploading the chunks in parallel. So the bandwitdh is used when the
server is waiting between chunks.
Basically the same functionality as for user sharing. Maybe it would be wise to
merge the two functionalities. Should be rather straight forward if we also
merge the UI parts.
This commit needs a lot of cleaning up. And a lot of error checking needs to be
added. However it is now possible to change and add new shares with users.
Sharing with groups should be just copy paste.
Also the UI needs some love.
The wizard code used to call hide() on hardcoded wizards.
This means that for a brief moment, the first page with the URL
(disabled line edit) may be seen. I think that's completely
legitimate from a feedback perspective. The alternative would
be to unhide on error, but this is rather unelegant...
... instead of uploading the file with replacement character, and asserting
on the next sync.
Issue #2649
If the file or folder on the file system has a name with invalid UTF-8,
We would convert the name to utf-8, and the conversion would result in
replacement character placeholder. And we would upload that file on the server
with that name, and save it with this name on the database.
Fix this issue by showing an error to the user for invalid files.
We are using a QHash to store all the folder objects. This does not allow for
easy sorting and looks weird to the user. Now they are first inserted into a
temp QMap to sort them properly.
* When folder config is used, other folder definitions are always
removed.
* Fix a bug with the wizard becoming stuck when 'skip folder config'
is used.
* Use a shared pointer to Account everywhere to ensure
the instance stays alive long enough for a sync to terminate
* Folder is now tied to an AccountState
* SyncEngine and OwncloudPropagator tie to an Account and use that
for all jobs they run
Issue: Since the setup wizard currently always replaces the
account, it will always wipe all folder definitions, even when
the actual changes to the account were minor.
This allows all the account state information to live in gui
while the sync-relevant data stays in libsync.
I also moved quotainfo to gui since it depends on the account state.
The server might support resuming, so don't always erase the temporary file
and pass the startSize, so the temporary file will be remove if the server
does not support it after all (because it is not sending the "bytes" header
Also pass the expected etag for consistency even if it's not used in this case.
The account state is now managed mostly by the Account itself
instead of through Application. The gui can still control whether
an account is signed out or not.
I just wanted to fix the warning:
QObject::connect: No such slot OCC::SettingsDialog::slotUpdateAccountIcon(QIcon) in settingsdialog.cpp:108
It turns out we don't need anymore the signal or any of the code that
was updating the account icon in the settings dialog since it we now have a fixed icon
* Stop the quota job from having an effect on account status
as it can sometimes take a long time to reply. See #2485 and
owncloud/core#12744.
* Instead of indirectly using the quota job, use the connection
validator to regularly ping the server with a basic PROPFIND for
'getlastmodified' on /.
This request was usually fast for users even when the quota PROPFIND
was slow.
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/>
- move items on top like on Mac OS (right is free for accounts now)
- The account icon no longer reflects the current status (in prep for multi-account)
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
We need Qt 5.3.3.
If the compiled qt version is Qt 5 but smaller than Qt 5.3.3, do a runtime
check.
OWNCLOUD_NEW_BANDWIDTH_LIMITING is still there for a special setup in which
we patch Qt with the patches
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.
https://github.com/owncloud/mirall/issues/2215
As of version 10.10 Yosemite, Mac OS X offers the user the option to use
a dark version of the dock and menu bar. The systray icon was black even
on the dark menu bar, thus rendering it nearly impossible to spot.
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.
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
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.
The apple build was broken because the elseif in the CMakeLists is never triggered.
Some code was not properly adapted for the new qtmacgoodies.
Some paths were not adapted to new split.
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.
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 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
Some PUT, may take a long time on the server to process (for example, the
last chunk). It may take more time that the timeout.
So in that case the server may reply with an url that we can poll for the etag
This patch is still work in progress
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.
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
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.
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)
Changed the account settings estimation to display both current file and overwhole estimation.
Decresed the progress font size to fit the added information
set(SOCKETAPI_TEAM_IDENTIFIER_PREFIX""CACHESTRING"SocketApi prefix (including a following dot) that must match the codesigh key's TeamIdentifier/Organizational Unit")
@@ -5,8 +5,9 @@ direct these to the [mailing list][mailinglist] or our [forum][forum].
We are also available on [IRC][irc].
### Bug Reporting Guidelines
* Important: Report the issue using our [template][template], it includes all the
*__Important__: Report the issue using our [template][template], it includes all the
informations we need to track down the issue.
* __SECURITY__: Report any potential security bug to security@owncloud.com following our [security policy](https://owncloud.org/security/) instead of filing an issue in our bug tracker
* This repository is *only* for issues within the ownCloud desktop client.
Issues in other compontents should be reported in their own repositores:
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Gelditu beharreko ${APPLICATION_EXECUTABLE} prozesua(k) aurkitu dira.$\nNahi duzu instalatzaileak zure partetik hauek gelditzea?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"kill prozesua ez da aurkitu!"
StrCpy$PageReinstall_NEW_Field_1"${APPLICATION_NAME}ren bertsio zaharrago bat instalatuta dago. Aholkatzen da hau desinstalatzea berria instalatu baino lehen. Hautatu nahi duzun aukera eta sakatu Hurrengoa jarraitzeko."
StrCpy$PageReinstall_NEW_Field_2"Desinstalatu instalatu baino lehen"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Hautatu nola nahi duzun ${APPLICATION_NAME} instalatzea."
StrCpy$PageReinstall_OLD_Field_1"${APPLICATION_NAME}ren bertsio berriago bat instalatuta dago! Ez da aholkatzen bertsio zaharrago bat instalatzea. Benetan bertsio zaharrago hau instalatu nahi baduzu, hobe da lehenengo bertsio berria desinstalatzea. Hautatu nahi duzun aukera eta sakatu Hurrengoa jarraitzeko."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} dagoeneko instalatuta dago.\nHautatu zer operazio egin nahi duzu eta klikatu Hurrengoa jarraitzeko."
StrCpy$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$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$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$INIT_NO_DESKTOP"Drecera de l'escrpitori (sobreescriu l'existent)"
StrCpy$UAC_ERROR_ELEVATE"No es pot elevar, error:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Aquest instal·lador requereix accés d'administrador, intenteu-ho de nou"
StrCpy$INIT_INSTALLER_RUNNING"L'instal·lador ja s'està executant."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Aquest desinstal·lador requereix accés d'administrador, intenteu-ho de nou."
StrCpy$INIT_UNINSTALLER_RUNNING"El desinstal·lador ja s'està executant."
StrCpy$SectionGroup_Shortcuts"Dreceres"
StrCpy$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_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"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 za vás ukončil?"
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_2"Odinstalovat před instalací"
StrCpy$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Zobrazit poznmky k vydn¡"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Nalezen proces(y) ${APPLICATION_EXECUTABLE}, kter‚ je nutn‚ ukonŸit .$\nPýejete si, aby je instaltor za vs ukonŸil?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Proces k ukonŸen¡ nebyl nalezen! "
StrCpy$PageReinstall_NEW_Field_1"Starç¡ verze ${APPLICATION_NAME} je nainstalovna 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Ÿovn¡."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Zvolte, jak chcete ${APPLICATION_NAME} nainstalovat."
StrCpy$PageReinstall_OLD_Field_1"Novější verze aplikace ${APPLICATION_NAME} je již 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_2"Přidat či znovu instalovat komponenty"
StrCpy$PageReinstall_OLD_Field_1"NovØjç¡ verze aplikace ${APPLICATION_NAME} je ji§ nainstalovna. 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Ÿovn¡."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} je ji§ nainstalovna.\nZvolte po§adovanou operaci a kliknØte na Dalç¡ pro pokraŸovn¡."
StrCpy$PageReinstall_SAME_Field_2"Pýidat Ÿi znovu instalovat komponenty"
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$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_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, smazat tuto složku s daty."
@@ -6,7 +6,7 @@ StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Het te stoppen proces is niet gev
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_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$OPTION_SECTION_SC_DESKTOP_Desc"میانبر دسکتاپ برای ${APPLICATION_NAME} ."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"میانبر اجرای سریع برای ${APPLICATION_NAME}"
StrCpy$UNINSTALLER_FILE_Detail"نوشتن حذف کننده"
StrCpy$UNINSTALLER_REGISTRY_Detail"در حال نوشتن کلید های رجیستری نصاب"
StrCpy$UNINSTALLER_FINISHED_Detail"اتمام"
StrCpy$UNINSTALL_MESSAGEBOX"به نظر نمی رسد نرم افزار ${APPLICATION_NAME} در '$INSTDIR'.$\n$\nنصب شده باشد.\nآیا می خواهید ادامه دهید ( توصیه نشده است ) ؟"
StrCpy$UNINSTALL_ABORT"عمل حذف توسط کاربر متوقف شد"
StrCpy$INIT_NO_DESKTOP"میانبر دسکتاپ (رونویسی وجود دارد)"
StrCpy$UAC_ERROR_ELEVATE"مشکل در بالااوردن ، خطا : "
StrCpy$INIT_INSTALLER_RUNNING"نصاب از قبل در حال اجراست."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"حذف برنامه نیاز به دسترسی مدیر دارد ، لطفا دوباره سعی کنید"
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_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$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$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_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$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$UAC_ERROR_ELEVATE"Kohottaminen ei onnistu, virhe:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Tämä asennusohjelma vaatii ylläpitäjän oikeudet, yritä uudelleen."
StrCpy$INIT_INSTALLER_RUNNING"Asennusohjelma on jo käynnissä."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Tämä poisto-ohjelma vaatii ylläpitäjän oikeudet, yritä uudelleen."
StrCpy$UAC_ERROR_LOGON_SERVICE"Kirjautumispalvelu ei ole käynnissä, perutaan!"
StrCpy$INIT_UNINSTALLER_RUNNING"Poisto-ohjelma on jo käynnissä."
StrCpy$SectionGroup_Shortcuts"Pikakuvakkeet"
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$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$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Afficher les notes de version"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Les processus ${APPLICATION_EXECUTABLE} en cours d’exécution doivent être stoppés avant de poursuivre.$\nVoulez-vous que le programme d’installation s’en charge pour vous ?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Fermeture des processus ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Le processus à stopper n'a pas été trouvé !"
StrCpy$PageReinstall_NEW_Field_1"Une ancienne version de ${APPLICATION_NAME} est installée sur votre système. Il est recommandé de désinstaller cette version avant de continuer. Sélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy$PageReinstall_NEW_Field_2"Désinstaller avant d'installer à nouveau"
StrCpy$PageReinstall_NEW_Field_3"Ne pas désinstaller"
StrCpy$PageReinstall_OLD_Field_1"Une version plus récente de ${APPLICATION_NAME} est déjà installée ! Il n'est pas recommandé d'installer une version plus ancienne. Si vous voulez vraiment installer cette version plus ancienne, il est préférable de d'abord désinstaller la version courante. Sélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} est déjà installée.\nSélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} est déjà installé.\nSélectionnez l'opération que vous voulez exécuter et cliquez sur Suivant pour continuer."
StrCpy$PageReinstall_SAME_Field_2"Ajouter/Réinstaller des composants"
StrCpy$PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE"Choisir l'option de maintenance à appliquer."
StrCpy$SEC_APPLICATION_DETAILS"Installer les essentiels de ${APPLICATION_NAME}."
StrCpy$PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE"Choisir l'opération de maintenance à effectuer."
StrCpy$SEC_APPLICATION_DETAILS"Installation des essentiels de ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_SHELL_EXT_SECTION"Intégration à l'Explorateur Windows"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installation de l'intégration à l'Explorateur Windows..."
StrCpy$OPTION_SECTION_SC_START_MENU_SECTION"Raccourci programme du menu Démarrer"
StrCpy$OPTION_SECTION_SC_START_MENU_DetailPrint"Ajouter un raccourci pour ${APPLICATION_NAME} au menu Démarrer."
StrCpy$OPTION_SECTION_SC_START_MENU_DetailPrint"Ajout d'un raccourci pour ${APPLICATION_NAME} au menu Démarrer."
StrCpy$OPTION_SECTION_SC_DESKTOP_SECTION"Raccourci Bureau"
StrCpy$OPTION_SECTION_SC_DESKTOP_DetailPrint"Créer un raccourci Bureau"
StrCpy$OPTION_SECTION_SC_DESKTOP_DetailPrint"Création d'un raccourci sur le Bureau"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_SECTION"Raccourci de lancement rapide"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint"Créer un raccourci de lancement rapide"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint"Création d'un raccourci de lancement rapide"
StrCpy$OPTION_SECTION_SC_APPLICATION_Desc"Essentiels de ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_START_MENU_Desc"Raccourci de ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Raccourci Bureau de ${APPLICATION_NAME}."
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_MESSAGEBOX"Il semble que ${APPLICATION_NAME} ne soit pas installé dans le dossier '$INSTDIR'.$\n$\nVoulez-vous poursuivre (non recommandé) ?"
StrCpy$UNINSTALL_ABORT"Désinstallation interrompue par l'utilisateur"
StrCpy$INIT_NO_QUICK_LAUNCH"Raccourci de lancement rapide (N/A)"
StrCpy$INIT_NO_QUICK_LAUNCH"Raccourci de lancement rapide (non disponible)"
StrCpy$INIT_NO_DESKTOP"Raccourci bureau (remplace l’existant)"
@@ -3,7 +3,7 @@ StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Amosar as notas de publicaci
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Atopáronse procesos ${APPLICATION_EXECUTABLE} que teñen que ser detidos.$\nQuere que sexa o instalador quen o(s) deteña?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Matando os procesos ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Non se atopou o proceso para matalo!"
StrCpy$PageReinstall_NEW_Field_1"No seu sistema hai instalada unha versión anterior do ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy$PageReinstall_NEW_Field_1"No seu sistema hai instalada unha versión anterior de ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy$PageReinstall_NEW_Field_2"Desinstalar antes de instalar"
StrCpy$OPTION_SECTION_SC_START_MENU_Desc"Acceso directo ao ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Acceso directo no escritorio para "
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Acceso de inicio rápido para ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Retirar o cartafol de datos do ${APPLICATION_NAME} do seu computador."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Confirma que quere eliminar o cartafol de datos do ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Deixeo sen marcar para manter o cartafol de datos para o seu uso posterior ou marqueo para eliminar o cartafol de datos."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Si, eliminar este cartafol de datos."
StrCpy$UNINSTALLER_FILE_Detail"Escribindo o desinstalador"
StrCpy$UNINSTALLER_REGISTRY_Detail"Escribindo o instalador nas chaves do rexistro"
StrCpy$UNINSTALLER_FINISHED_Detail"Rematado"
@@ -37,8 +35,9 @@ StrCpy $UNINSTALL_ABORT "A desinstalaci
StrCpy$INIT_NO_QUICK_LAUNCH"Acceso de inicio rápido (n/d)"
StrCpy$INIT_NO_DESKTOP"Atallo no escritorio (sobrescribe o existente)"
StrCpy$UAC_ERROR_ELEVATE"Non foi posíbel elevalo, erro:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Este instalador require acceso de administrador, tenteo de novo"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Este instalador require acceso de administrador, ténteo de novo"
StrCpy$INIT_INSTALLER_RUNNING"O instalador xa está en execución."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Este desinstalador require acceso de administrador, tenteo de novo"
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Este desinstalador require acceso de administrador, ténteo de novo"
StrCpy$UAC_ERROR_LOGON_SERVICE"O servizo de acceso non está en execución, cancelando!"
StrCpy$INIT_UNINSTALLER_RUNNING"O desinstalador xa está en execución."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Συντόμευση επιφάνειας εργασίας της ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Συντόμευση Ταχείας Εκκίνησης της ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Αφαίρεση του φακέλου δεδομένων της ${APPLICATION_NAME} από τον υπολογιστή σας."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Θέλετε να αφαιρέσετε τον φάκελο δεδομένων της ${APPLICATION_NAME};"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Αφήστε κενό γιανα διατηρήσετε τον φάκελο δεδομένων για μελλοντική χρήση ή επιλέξτε γιανα διγράψετε το φάκελο δεδομένων."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Ναι, διαγραφή αυτού του φακέλου δεδομένων."
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"A következő folyamatot(okat) meg kell állítani ${APPLICATION_EXECUTABLE}.$\nSzeretné ha a telepítő program megállítani ezeket a folyamatokat?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Kilövésre szánt folyamat nem található."
StrCpy$PageReinstall_NEW_Field_1"Az ${APPLICATION_NAME} alkalmazás egy régebbi verziója telepítva van a rendszeren. Ajánlott a régi alkalmazás eltávolítása mielőtt a legfrissebb verziót telepítané. Válassza ki milyen műveletet szeretne végrehajtani, és nyomja meg a $\"Következő$\" gombot a folytatáshoz."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Válaszd ki, hogy szeretnéd telepíteni a következő alkalmazást ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Az ${APPLICATION_NAME} alklamazás egy újabb verziója már megtalálható a rendszeren. Nem ajánlott egy régebbi verzió telepítése. Ha valóban szeretné a régebbi verziót telepíteni, akkor ajánlott a jelenleg telepített verzió eltávolítása. Válassza ki milyen műveletet szeretne végrehajtani, és nyomja meg a $\"Következő$\" gombot a folytatáshoz."
StrCpy$PageReinstall_SAME_Field_1"Az ${APPLICATION_NAME} alkalmazás ${VERSION} verziója már telepítve van.\nKérem válassza ki milyen műveletet szeretne végrehajtan, és nyomja meg a $\"Következő$\" gombot."
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$INIT_UNINSTALLER_RUNNING"The uninstaller is already running."
StrCpy$SectionGroup_Shortcuts"Shortcuts"
StrCpy$UNINSTALL_MESSAGEBOX"Nem sikerült az ${APPLICATION_NAME} alkalmazás telepítése a '$INSTDIR' könyvtárba.$\n$\nSzeretné mindenképpen folytatni (nem ajánlott)?"
StrCpy$UNINSTALL_ABORT"Az eltávolítást egy felhasználó megszakította"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Fant ${APPLICATION_EXECUTABLE}-prosess(er) som må stoppes.$\nVil du at installasjonsprogrammet skal stoppe dem for deg?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Fant ikke prosess som skulle termineres!"
StrCpy$PageReinstall_NEW_Field_1"En eldre versjon av ${APPLICATION_NAME} er installert på systemet ditt. Det anbefales at du avnistallerer den versjonen før installering av ny versjon. Velg hva du vil gjøre og klikk Neste for å fortsette."
StrCpy$PageReinstall_NEW_Field_2"Avinstaller før installering"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Velg hvordan du vil installere ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"En nyere versjon av ${APPLICATION_NAME} er allerede installert! Det anbefales ikke at du installerer en eldre versjon. Hvis du virkelig ønsker å installere denne eldre versjonen, er det bedre å avinstallere gjeldende versjon først. Velg hva du vil gjøre og klikk Neste for å fortsette."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} er allerede installert.\nVelg hva du vil gjøre og klikk Neste for å fortsette."
StrCpy$PageReinstall_SAME_Field_2"Legg til/installer komponenter på nytt"
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$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_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$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$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$ConfirmEndProcess_MESSAGEBOX_TEXT"Processos(s) ${APPLICATION_EXECUTABLE} em execução. Estes processos precisam de ser interrompidos.$\\nDeseja que o instalador os termine automaticamente?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"A terminar os processos ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Não foi encontrado o processo a terminar!"
StrCpy$PageReinstall_NEW_Field_1"Uma versão antiga de ${APPLICATION_NAME} está instalada no sistema. É recomendado que você desinstale a versão atual antes de instalar. Selecione a operação que deseja executar e clique em $\"Avançar$\" para continuar."
StrCpy$PageReinstall_NEW_Field_2"Desinstalar antes de instalar"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Escolha como pretende instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Já esta instalada uma nova versão dfe ${APPLICATION_NAME}! Não se recomenda instalar uma versão anterior. Se quer mesmo instalar esta versão mais antiga, é melhor desinstalar primeiro a versão atual. Selecione a operação que pretende fazer e clique Seguinte para continuar."
StrCpy$PageReinstall_OLD_Field_1"Uma versão mais recente do ${APPLICATION_NAME} já está instalada! Não é recomendada a instalação de uma versão mais antiga. Se realmente deseja instalar esta versão, aconselha-se a desinstalação da versão atual primeiro. Selecione a operação que deseja executar e clique em Avançar para continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} já está instalado.\nSelecione a operação que deseja fazer, e clique Seguinte para continuar."
@@ -6,7 +6,7 @@ StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Processo para eliminar n
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_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_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_MESSAGEBOX_TEXT"Обнаружен процесс ${APPLICATION_EXECUTABLE}, который требуется остановить.$\nВы хотите чтобы программа установки сделала это самостоятельно?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Завершение процессов ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Не найдены процессы, которые нужно завершить!"
StrCpy$PageReinstall_NEW_Field_1"Обнаружена более старая версия ${APPLICATION_NAME}. Рекомендуется удалить её перед установкой. Выберите желаемое действие и нажмите $\"Далее$\"."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Процессы для завершения не найдены!"
StrCpy$PageReinstall_NEW_Field_1"Обнаружена более старая версия ${APPLICATION_NAME}. Рекомендуется удалить её перед установкой. Выберите желаемое действие и нажмите Далее для продолжения."
StrCpy$PageReinstall_NEW_Field_2"Удалить перед установкой"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Выберите, как вы хотите установить ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Новая версия ${APPLICATION_NAME} уже установлена! Не рекомендуется устанавливать старую версию. Если вы действительно хотите, чтобы устанавливать старую версию, лучше удалить текущую версию. Выберите операцию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} уже установлена.\nВыберитеоперацию, которую необходимо выполнить, и нажмите Далее, чтобы продолжить."
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Выберите, как вы хотите установить ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Новая версия ${APPLICATION_NAME} уже установлена! Не рекомендуется устанавливать старую версию. Если вы действительно хотите установить эту старую версию, то сначала лучше удалить текущую версию. Выберите желаемое действие и нажмите Далее для продолжения."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} уже установлена.\nВыберитежелаемое действие и нажмите Далее для продолжения."
StrCpy$UNINSTALL_MESSAGEBOX"Скорее всего, приложение ${APPLICATION_NAME} уже установлено в директорию '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy$UNINSTALL_MESSAGEBOX"Похоже, что приложение ${APPLICATION_NAME} не установлено в каталог '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
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_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$OPTION_SECTION_SC_START_MENU_DetailPrint"Adding shortcut for ${APPLICATION_NAME} to the Start Menu."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Remove ${APPLICATION_NAME}'s data folder from your computer."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Do you want to delete ${APPLICATION_NAME}'s 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_ABORT"Uninstall aborted by user"
StrCpy$UAC_ERROR_ELEVATE"Unable to elevate, error:"
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$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$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$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_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$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"Mostrar las notas de la versión"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"El/los proceso/s ${APPLICATION_EXECUTABLE} debe/n ser detenidos.$\n¿Quiere que el instalador lo haga por usted?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"¡Proceso a detener no encontrado!"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"¡Proceso para detener no encontrado!"
StrCpy$PageReinstall_NEW_Field_1"Una versión anterior de ${APPLICATION_NAME} se encuentra instalada en el sistema. Se recomienda de instalar la versión actual antes de instalar la nueva. Seleccione la operacion deseada y haga click en Siguiente para continuar."
StrCpy$PageReinstall_NEW_Field_2"Desinstalar antes de instalar"
StrCpy$PageReinstall_NEW_Field_3"No desinstalar"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"Ya está instalado"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Elija como quiere instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una nueva versión de ${APPLICATION_NAME} ya está instalada. No es recomendable instalar una versión anterior. Si realmente quiere instalar esta versión anterior, es mejor que desinstale la versión actual primero. Seleccione la operación que desea realizar y pulse Next para continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} ya está instalada.\nSeleccione la operación que desea realizar y pulse Next para continuar."
StrCpy$OPTION_SECTION_SC_START_MENU_Desc"Acceso Directo de ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Acceso Directo de Escritorio para ${APPLICATION_NAME}"
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Lanzador Rápido de Accesos Director para ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Remueva la carpeta de datos de ${APPLICATION_NAME} del computador."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"¿Desea eliminar la carpeta de datos de ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Deja sin marcar para mantener la carpeta de datos para uso posterior, o del marque para eliminar la carpeta de datos."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Si, Elimine esta carpeta de datos."
StrCpy$UNINSTALLER_REGISTRY_Detail"Escribiendo claves en el registro del instalador"
StrCpy$UNINSTALLER_FINISHED_Detail"Terminado"
StrCpy$UNINSTALL_MESSAGEBOX"Parece que ${APPLICATION_NAME} no está instalado en el directorio '$INSTDIR'.$$ ¿Continuar de todos modos? (No Recomendado)"
StrCpy$UNINSTALL_ABORT"Desinstalación cancelada por el usuario"
StrCpy$INIT_NO_QUICK_LAUNCH"Acceso Directo al Lanzador Rápido (N/A)"
StrCpy$INIT_NO_QUICK_LAUNCH"Atajo de inicio rápido (N/A)"
StrCpy$INIT_NO_DESKTOP"Atajo de escritorio (sobreescribe el existente)"
StrCpy$UAC_ERROR_ELEVATE"No se ha podido elevar, Error:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"El instalador requiere acceso administrativo, intente de nuevo"
StrCpy$UAC_ERROR_ELEVATE"No se ha podido elevar, error:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"El instalador requiere acceso administrativo, inténtelo de nuevo"
StrCpy$INIT_INSTALLER_RUNNING"El instalador ya se encuentra en ejecución"
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"El desinstalador requiere acceso administrativo, intente de nuevo"
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"El desinstalador requiere acceso administrativo, inténtelo de nuevo"
StrCpy$UAC_ERROR_LOGON_SERVICE"Servicio Inicio de sesión no se está ejecutando, abortando!"
StrCpy$INIT_UNINSTALLER_RUNNING"El desinstalador ya se encuentra en ejecución."
StrCpy$UNINSTALLER_REGISTRY_Detail"Escribiendo claves de Registro del Instalador"
StrCpy$UNINSTALLER_FINISHED_Detail"Terminado"
@@ -35,6 +31,8 @@ StrCpy $INIT_UNINSTALLER_RUNNING "El des-instalador ya esta corriendo"
StrCpy$SectionGroup_Shortcuts"Accesos Directos"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$OPTION_SECTION_SC_SHELL_EXT_SECTION"Integration for Windows Explorer"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installing Integration for Windows Explorer"
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"Показати примітки до випуску"
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Оберіть подальшу дію та натисніть $\"Далі$\"."
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}
{\f172\froman\fcharset238\fprq2 Times New Roman CE;}{\f173\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f175\froman\fcharset161\fprq2 Times New Roman Greek;}{\f176\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f177\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f178\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f179\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f180\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid6712196\rsid7485074\rsid11352300\rsid15940516}{\*\generator Microsoft Word 11.0.5604;}{\info{\title Processes v1}{\author Hardwired}{\operator Hardwired}{\creatim\yr2004\mo12\dy12\hr23\min42}
\par }\pard \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15940516 {\f39\fs20\insrsid15940516 This software binaries and source-code are free for any kind of use, including commercial use. }{
\f39\fs20\insrsid7485074\charrsid7485074 There is no restriction and no guaranty for using}{\f39\fs20\insrsid7485074\charrsid7485074 t}{\f39\fs20\insrsid7485074\charrsid7485074 his software}{\f39\fs20\insrsid7485074\charrsid7485074 and/or it
s source-code. }{\f39\fs20\insrsid15940516
\par I}{\f39\fs20\insrsid7485074\charrsid7485074 f you use the plug}{\f39\fs20\insrsid7485074\charrsid7485074 -}{\f39\fs20\insrsid7485074\charrsid7485074 in }{\f39\fs20\insrsid7485074\charrsid7485074 and/}{\f39\fs20\insrsid7485074\charrsid7485074 or it}{
\f39\fs20\insrsid7485074\charrsid7485074 s}{\f39\fs20\insrsid7485074\charrsid7485074 source-code, I would }{\f39\fs20\insrsid7485074\charrsid7485074 appreciate }{\f39\fs20\insrsid7485074\charrsid7485074 if my name is mentioned.}{
-Removed UAC::RunElevatedAndProcessMessages (UAC::RunElevated now supports non NULL $HWNDParent)
-Removed several useless sample scripts
v0.0.7e - 20080229 (AndersK)
*Added ugly hack for hackwnd to find correct title and give us a proper taskbar so the elevation dialog does not get lost (2000,XP (This also fixed Alt-Tab icon on Vista))
*Should compile with MSVC2005 now (Thanks Case)
*More unicode fixes, this time even tested with NSIS Unicode (Only RunElevated and Exec tested)
v0.0.7d - 20080226 (AndersK)
*Fixed a couple of unicode version bugs (Unicode version still untested)
*Fixed weird XP string length bug (Thanks kfank)
v0.0.7c - 20080218 (AndersK)
*Fixed SyncVars string length bug
v0.0.7b - 20080205 (AndersK)
*Fixed DelayLoadDlls() problem on NT4
v0.0.7 - 20080120 (AndersK)
+Added UAC::StackPush (For use with ExecCodeSegment)
v0.0.6d - 20071108 (AndersK)
+Now syncs basic registers/variables before calling UAC::*Exec* and UAC::ExecCodeSegment (r0-r9,R0-R9,$CMDLINE,$INSTDIR,$OUTDIR,$EXEDIR,$LANGUAGE)
+Added UAC::RunElevatedAndProcessMessages, this can be called after .onInit (Very experimental, DO NOT USE)
+New include file with helper macros: UAC.nsh
*Replazed Clammerz hack with a better version
v0.0.6c - 20071014 (AndersK)
+Check for and split up "domain\user" style input in RunAs.cpp for CreateProcessWithLogonW
*Added a ugly hack to trick messagebox'es in .OnInit to appear correctly on Vista (Thanks Clammerz)
v0.0.6b - 20070523 (AndersK)
*Fixed showwindow flag (Thanks for the help kichik)
v0.0.6 - 20070512 (AndersK)
+Added basic language support for MyRunAs dialog.
v0.0.5e - 20070509 (AndersK)
*Fixed detection of UAC mode?
+IPC window is visible (but offscreen) during elevation to help with SetForegroundWindow/Focus problems
v0.0.5d - 20070324 (AndersK)
*Fixed stupid IsAdmin bug
v0.0.5c - 20070304 (AndersK)
*_IsAdmin now uses CheckTokenMembership if it exists ( MSKB:Q118626 / http://blogs.msdn.com/larryosterman/archive/2007/03/14/why-does-kb-118626-use-accesscheck-to-check-if-you-re-a-member-of-the-administrators-group.aspx )
v0.0.5b - 20070301 (AndersK)
*Fixed ExecCodeSegment (Thread now calls CoInitialize)
v0.0.5 - 20070228 (AndersK)
+Added ExecCodeSegment (You can now call ANY code in the context of the original user)
v0.0.4b - 20070226 (AndersK)
*Fixed (My)RunAs font (http://blogs.msdn.com/oldnewthing/archive/2005/02/04/366987.aspx)
v0.0.4 - 20070225 (AndersK)
+Added (My)RunAs dialog, used on Vista when running as LUA with UAC off
+Always uses /NCRC for elevated instance
*Now compiles as UNICODE (Untested, no UnicodeNSIS to test on)
v0.0.3 - 20070224 (AndersK)
+Added Exec/ExecWait
+Added Verb & ShowWindow support for ShellExec[Wait]
This software is provided 'as-is', without any express or implied warranty.
ZLIB/LIBPNG LICENSE
-------------------
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
staticLPCTSTRg_RunAsHelpText=_T("You may not have the necessary permissions to use all the features of the program you are about to run. You may run this program as a different user or continue to run the program as the current user.");
staticLPCTSTRg_RunAsCurrUsrFmt=_T("&Current user (%s)");//Max 50 chars!
staticLPCTSTRg_RunAsSpecHelp=_T("Run the program as the &following user:");
//Try to find [\\]domain\user and split into username and domain strings
WCHAR*pUName=wszUName,*pDomain=0;
p=wszUName;
//if (*p==p[1]=='\\')pUName=(p+=2);else \ //Should we still split things up if the string starts with \\ ? Is it possible to use \\machine\user at all?
++p;//Don't parse "\something", require at least one char before backslash "?[*\]something"
Every function will try to emulate the basic NSIS instruction (of similar name) when UAC::RunElevated has not "succeeded" or running on a system that does not support elevation (Win9x/NT4)</p>
<tr><td><spanclass="nsisvar">$0</span></td><td>Win32 error code (0 on success, 1223 if user aborted elevation dialog, anything else should be treated as a fatal error)</td></tr>
<tr><td>0</td><td>UAC is not supported by the OS</td></tr>
<tr><td>1</td><td>Started a elevated child process, the current process should act like a wrapper (Call Quit without any further processing)</td></tr>
<tr><td>2</td><td>The process is already running @ HighIL (Member of admin group)</td></tr>
<tr><td>3</td><td>You should call RunElevated again (This can happen if a user without admin priv. is used in the runas dialog)</td></tr>
</table>
</td></tr>
<tr><td><spanclass="nsisvar">$2</span></td><td><spanclass="code">If <spanclass="nsisvar">$0</span>==0 &&<spanclass="nsisvar">$1</span>==1</span>: ExitCode of the elevated fork process (The NSIS errlvl is also set)</td></tr>
<tr><td><spanclass="nsisvar">$3</span></td><td><spanclass="code">If <spanclass="nsisvar">$0</span>==0</span>: 1 if the user is a member of the admin group or 0 otherwise</td></tr>
</table></td></tr>
<tr><td>Description:</td><td>Allows non-admin/UAC.LUA users to re-spawn the installer as another user and UAC.Admin users to elevate.</td></tr>
<tr><td>Returns:</td><td>[None] (ErrorFlag is set on error)</td></tr>
<tr><td>Description:</td><td>Calls NSIS function in LUA/outer instance (If you use instructions that alter the UI or the stack/variables in the code segment (StrCpy,Push/Pop/Exch,DetailPrint etc.) they will affect the hidden wrapper installer and not "your" installer instance)</td></tr>
<tr><td>Returns:</td><td><spanclass="nsisvar">$0</span> !=0 if supported</td></tr>
<tr><td>Description:</td><td>Check if the OS supports UAC (And the user has UAC turned on) <spanclass="importanttxt">This function only tests if UAC is active, will return 0 on NT5 even though runas is implemented on those platforms, will also return 0 on NT6+ if UAC is off. You should only call this function during testing, NOT to determine if you can call UAC::RunElevated</span></td></tr>
StrCmp1223$0UAC_ElevationAborted; UAC dialog aborted by user?
StrCmp0$00UAC_Err; Error?
StrCmp1$10UAC_Success;Are we the real deal or just the wrapper?
Quit
UAC_Err:
MessageBoxmb_iconstop"Unable to elevate , error $0"
Abort
UAC_ElevationAborted:
/*System::Call"user32::CreateWindowEx(i ${WS_EX_TRANSPARENT}|${WS_EX_LAYERED}, t 'Button', t 'blah', i 0, i 10, i 10, i 10, i 10, i 0, i 0, i 0) i .r0"
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.