To use the same logic as the other clients and unify ownBrander
implementations, the switch is now called multiAccount() rather
than singleAccount() with a reverse logic.
Desktop Client stays with the default of having multiaacount
enabled.
Note that existing brandings need to rename the switch.
https://github.com/owncloud/ownbrander/issues/443
If there is a any none files, we do not show the dialog saying that all
files have been removed. If a directory contiains ignored files, we still
want to show this message box even if the directory will not be deleted
This menu in 2.0.* now has 4 options.
The small screenshot needs updating also. @carlaschroder it is probably best if you take a new screen shot from whatever client version you have been using for screen shots. That way they will all have a consistent look.
Otherwise win32 api simply does not open reparse points at all,
such as junctions.
This will improve the user experience of #3813 as we now identify
the junctions as symlinks.... and ignore them properly.
Registry keys are no directories; you would not "migrate" to keys if you are just about to switch to them; resembling formulas as "Edit these / this Registry key/s" ease fast reading, for that also ":" instead of "::" at the end (formatting what follows)
fixes the unicode issue #3753
I don't know much CPP and Qt but after some google research I found this http://wiki.qt.io/Strings_and_encodings_in_Qt
it does mention trUtf8() that has done the trick for me on Linux with Gnome 3.16.
Haven't tested it on other systems
OwnCloudFinderRequestManager::_shareMenuTitle was not retained anymore
after the FinderSync refactoring which would cause it to contain any
kind of garbage value for some reason.
Fix the issue by also enabling ARC for RequestManager.m.
We can't enable ARC for the whole project since Finder.h is included
by many .m files and it's not trivial to port to ARC.
Change the wording of the certificate error dialog to include the
account URL and be a bit more accurate.
(Do not mention "SSL" in user facing messages)
Previously, in case of an error while deleting a directory, we would not
remove the entries from the local db, despite most of the files would
be deleted.
Which means that if the files re-appear on the server with the same etag,
we would think the file were deleted from the client and propagate the change.
In 1.8.0 we had this bug that we would not see some directory in the server in
some cases. This would lead us to delete the file on the client. Normaly the
files are deleted from the local database and next sync would re-download the files.
But in the cases where there was an error deleting one of the file (for example
if it was locked) we would then propagate the delete to the server.
Fix this by always deleting from the database the files that we deleted.
Issue #3206
Use an iterator variable declared outside of the loop condition
expression.
MinGW doesn't support C99 very easily and it's easier to keep
our C code C89 compliant.
This function only checks the full path and the basename and is thus
around 7x faster. It is very useful in a csync_update context where
we know that the leading dirs have already been checked for exclusion.
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
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 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.
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.
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
set(SOCKETAPI_TEAM_IDENTIFIER_PREFIX""CACHESTRING"SocketApi prefix (including a following dot) that must match the codesign key's TeamIdentifier/Organizational Unit")
@@ -5,10 +5,11 @@ 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
informations we need to track down the issue.
*__Important__: Report the issue using our [template][template], it includes all the
information 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:
Issues in other components 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_SAME_Field_1"${APPLICATION_NAME} ${VERSION} dagoeneko instalatuta dago.\nHautatu zer operazio egin nahi duzu eta klikatu Hurrengoa jarraitzeko."
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$UAC_INSTALLER_REQUIRE_ADMIN"Instalatzaileak administratzaile baimenak behar ditu, saiatu berriro"
StrCpy$INIT_INSTALLER_RUNNING"Instalatzailea dagoeneko martxan da."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Desinstalatzaile honek administratzaile baimenak behar ditu, saiatu berriro"
StrCpy$INIT_UNINSTALLER_RUNNING"Desinstalatzailea dagoeneko martxan da."
StrCpy$SectionGroup_Shortcuts"Lasterbideak"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy$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$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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_ELEVATE"Unable to elevate, error:"
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Trieu la manera com voleu instal·lar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una versió més recent de ${APPLICATION_NAME} ja està instal.lada!! No es recomana instal.lar una versió més antiga. Si realment voleu instal.lar una versió més antiga, és millor primer desinstal.lar la versió actual. Seleccioni l'operació que desitjeu realitzar i feu clic a Següent per a continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} ja està instal.lat.↩\nSeleccioneu l'operació que desitjeu realitzar i feu clic a Següent per continuar."
StrCpy$OPTION_SECTION_SC_DESKTOP_Desc"Drecera a l'escrptori per ${APPLICATION_NAME}."
StrCpy$OPTION_SECTION_SC_QUICK_LAUNCH_Desc"Drecera d'inici ràpid per ${APPLICATION_NAME}."
StrCpy$UNINSTALLER_APPDATA_SUBTITLE"Esborra la carpeta de dades de ${APPLICATION_NAME} del vostre equip."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Voleu esborrar la carpeta de dades de ${APPLICATION_NAME}?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Deixeu-ho sense marcar per mantenir la carpeta de dades per un ús posterior o marqueu-ho per esborrar la carpeta de dades."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Sí, esborra la carpeta de dades."
StrCpy$UNINSTALLER_FILE_Detail"Escrivint el desinstal·lador"
StrCpy$UNINSTALLER_REGISTRY_Detail"Escrivint les claus del registre de l'instal·lador"
StrCpy$UNINSTALLER_FINISHED_Detail"Acabat"
@@ -42,5 +39,5 @@ StrCpy $INIT_INSTALLER_RUNNING "L'instal·lador ja s'està executant."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Aquest desinstal·lador requereix accés d'administrador, intenteu-ho de nou."
StrCpy$INIT_UNINSTALLER_RUNNING"El desinstal·lador ja s'està executant."
StrCpy$SectionGroup_Shortcuts"Dreceres"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_SECTION"Status icons for Windows Explorer"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installing status icons for Windows Explorer"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
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.$\n$\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."
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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is al geïnstalleerd.$\n$\nKies de actie die u uit wil voeren en druk op Verder om door te gaan."
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$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_NEW_MUI_HEADER_TEXT_SUBTITLE"Vali, kuidas sa soovid paigaldada ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Uuem versioon ${APPLICATION_NAME} on juba paigaldatud! Vanema versiooni paigaldus ei ole soovitatav. Kui tõesti tahad paigaldada vanemat versiooni, siis on parem esmalt eemaldada olemasolev. Vali tehtav toiming ning kliki Jätka."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} on juba paigaldatud.\nVali tehtav toiming ning kliki Jätka."
StrCpy$UAC_ERROR_ELEVATE"Ei suuda ülendada õigusi, viga: "
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"See paigaldaja vajab admini ligipääsu, proovi uuesti"
StrCpy$INIT_INSTALLER_RUNNING"Paigaldaja on juba käimas."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"See desinstallija vajab admini ligipääsu, proovi uuesti"
StrCpy$INIT_UNINSTALLER_RUNNING"See desinstallija on juba käimas"
StrCpy$SectionGroup_Shortcuts"Viidad"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_SECTION"Status icons for Windows Explorer"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installing status icons for Windows Explorer"
StrCpy$UAC_ERROR_LOGON_SERVICE"Sisselogimisteenus ei tööta, katkestamine!"
StrCpy$INIT_UNINSTALLER_RUNNING"See desinstallija on juba käimas."
StrCpy$SectionGroup_Shortcuts"Otseteed"
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$MUI_FINISHPAGE_SHOWREADME_TEXT_STRING"نمایش پادداشت های انتشار نسخه"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"${APPLICATION_EXECUTABLE} پردازش (ها) که باید متوقف شوند را پیدا کرد. $\nآیا میخواهیم برنامه نصاب این پردازشها را برای شما متوقف کند ؟"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"پردازش برای از بین بردن یافت نشد!"
StrCpy$PageReinstall_NEW_Field_1"نسخهی قدیمی از برنامه ${APPLICATION_NAME} بر روی سیستم شما نصب شده است، پیشنهاد میشود نسخهی فعلی را قبل از نصب حذف کنید. عملیات مورد نظر را انتخاب کنید و برای ادامه روی دکمه Next کلیک کنید."
StrCpy$PageReinstall_NEW_Field_2"عمل حذف را قبل از نصب انجام دهید"
StrCpy$PageReinstall_NEW_Field_3"حذف نکن"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"از قبل نصب شده است"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"نحوهی نصب ${APPLICATION_NAME} را انتخاب کنید."
StrCpy$PageReinstall_OLD_Field_1"نسخه جدیدتری از برنامه ${APPLICATION_NAME} بر روی سیستم شما نصب شده است، نصب نسخهی قدیمیتر پیشنهاد نمیشود. درصورتیکه میخواهید نسخهی قدیمی را نصب کنید، حذف نسخهی کنونی قبل از اجرای نصب جدید پیشنهاد میشود. عملیات مورد نظر را انتخاب و بر روی دکمهی Next کلیک کنید."
StrCpy$PageReinstall_SAME_Field_1"نسخه ${VERSION} از ${APPLICATION_NAME} هماکنون نصب شده است.$↩$\nعملیات مورد نظر را انتخاب و بر روی دکمه Next کلیک کنید."
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_UNINSTALLER_RUNNING"حذف کننده از قبل در حال اجراست."
StrCpy$SectionGroup_Shortcuts"میانبرها"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy$PageReinstall_NEW_Field_1"An older version of ${APPLICATION_NAME} is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
StrCpy$PageReinstall_NEW_Field_2"Uninstall before installing"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Choose how you want to install ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"A newer version of ${APPLICATION_NAME} is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} on jo asennettu.$\n$\nValitse haluamasi toiminto ja napsauta Seuraava jatkaaksesi."
StrCpy$UNINSTALLER_APPDATA_LABEL_1"Haluatko varmasti poistaa ${APPLICATION_NAME}-datakansion?"
StrCpy$UNINSTALLER_APPDATA_LABEL_2"Jätä valinta ruksimatta säilyttääksesti datakansion myöhempää käyttöä varten tai täytä ruksi jos haluat poistaa datakansion ja siinä olevat tiedostot."
StrCpy$UNINSTALLER_APPDATA_CHECKBOX"Kyllä, poista tämä datakansio."
StrCpy$UNINSTALL_MESSAGEBOX"Vaikuttaa siltä että sovellus ${APPLICATION_NAME} on asennettu kansioon '$INSTDIR'.\n\nHaluatko jatkaa tästä huolimatta (ei suositeltavaa)?"
StrCpy$UNINSTALL_ABORT"Poistaminen keskeytettiin käyttäjän toimesta"
StrCpy$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é.$\n$\nSélectionnez l'opération que vous souhaitez effectuer 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,22 +3,21 @@ StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Amosar as notas de publicaci
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Atopáronse procesos ${APPLICATION_EXECUTABLE} que teñen que ser detidos.$\nQuere que sexa o instalador quen o(s) deteña?"
StrCpy$ConfirmEndProcess_KILLING_PROCESSES_TEXT"Matando os procesos ${APPLICATION_EXECUTABLE}."
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Non se atopou o proceso para matalo!"
StrCpy$PageReinstall_NEW_Field_1"No seu sistema hai instalada unha versión anterior do ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy$PageReinstall_NEW_Field_1"No seu sistema hai instalada unha versión anterior de ${APPLICATION_NAME}. Recomendámoslle que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy$PageReinstall_NEW_Field_2"Desinstalar antes de instalar"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Escolla como quere instalar ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Ten instalada unha versión actualizada do ${APPLICATION_NAME}! recomendámoslle que non instale unha versión anterior. Se realmente quere instalar esta versión máis antiga, é preferíbel que desinstale a versión actual antes de instalar. Seleccione a operación que quere realizar e prema en Seguinte para continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} xa está instalado.\nSeleccione a operación que que quere realizar e prema en Seguinte para continuar."
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"
@@ -39,8 +34,10 @@ 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$SectionGroup_Shortcuts"Atallos"
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_NEW_MUI_HEADER_TEXT_SUBTITLE"Wählen Sie die Methode, mit der sie ${APPLICATION_NAME} installieren wollen."
StrCpy$PageReinstall_OLD_Field_1"Eine neuere Version von ${APPLICATION_NAME} ist bereits installiert! Es wird nicht empfohlen, eine ältere Version zu installieren. Wollen Sie dies trotzdem tun, so sollten Sie die aktuelle Version zunächst entfernen. Wählen Sie eine Vorgehensweise und wählen dann $\"Weiter$\"."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} ist bereits installiert.\nWählen Sie eine Vorgehensweise und klicken Sie auf $\"Weiter$\"."
StrCpy$UAC_ERROR_ELEVATE"Kann Rechte nicht erhöhen, Fehler:"
StrCpy$UAC_ERROR_ELEVATE"Rechte können nicht erhöht werden, Fehler:"
StrCpy$UAC_INSTALLER_REQUIRE_ADMIN"Dieses Installationsprogramm erfordert Administrator-Rechte, bitte erneut versuchen"
StrCpy$INIT_INSTALLER_RUNNING"Das Installationsprogramm wird bereits ausgeführt."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Das Deinstallationsprogramm erfordert Administrator-Rechte. Bitte erneut versuchen."
StrCpy$INIT_UNINSTALLER_RUNNING"Das Deinstallationsprogramm wird bereits ausgeführt."
StrCpy$SectionGroup_Shortcuts"Verknüpfungen"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Επιλέξτε πώς θέλετε να εγκαταστήσετε την ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Μια νεώτερη έκδοση της ${APPLICATION_NAME} είναι ήδη εγκατεστημένη! Δεν συνίσταται να εγκαταστείσετε μια παλαιότερη έκδοση. Εάν θέλετε πραγματικά να εγκαταστήσετε αυτήν την παλαιότερη έκδοση, είναι καλύτερο να απεγκαταστήσετε την τρέχουσα έκδοση πρώτα. Επιλέξτε τη διαδικασία που επιθυμείτε να εκτελέσετε και επιλέξτε Επόμενο γιανα συνεχίσετε."
StrCpy$PageReinstall_SAME_Field_1"Η ${APPLICATION_NAME} ${VERSION} είναι ήδη εγκατεστημένη.\n\nΕπιλέξτε τη διαδικασία που επιθυμείτε να εκτελέσετε και επιλέξτε Επόμενο γιανα συνεχίσετε."
StrCpy$PageReinstall_SAME_Field_1"Η ${APPLICATION_NAME} ${VERSION} είναι ήδη εγκατεστημένη.$\n$\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érjük válaszd ki milyen műveletet szeretnél végrehajtani, és nyomd meg a „Következő” gombot."
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$UAC_ERROR_LOGON_SERVICE"A bejelentkező szolgáltatás nem fut, megszakítás!"
StrCpy$INIT_UNINSTALLER_RUNNING"Az eltávolító már fut."
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy$ConfirmEndProcess_KILL_NOT_FOUND_TEXT"Process to kill not found!"
StrCpy$PageReinstall_NEW_Field_1"An older version of ${APPLICATION_NAME} is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
StrCpy$PageReinstall_OLD_Field_1"A newer version of ${APPLICATION_NAME} is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE"Choose the maintenance option to perform."
StrCpy$UNINSTALL_MESSAGEBOX"It does not appear that ${APPLICATION_NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?"
StrCpy$UAC_ERROR_ELEVATE"Unable to elevate, error:"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Scegli come desideri installare ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Una versione più recente di ${APPLICATION_NAME} è già installata! Non è consigliabile installare una versione più vecchia. Se vuoi davvero installare una versione più vecchia, ti consigliamo di rimuovere prima la versione attuale. Scegli l'operazione da eseguire e fai clic su Avanti per continuare."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} è già installato.\nSeleziona l'operazione che desideri eseguire e fai clic su Avanti per continuare."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} è già installato.$\n$\nSeleziona l'operazione che desideri eseguire e fai clic su Avanti per continuare.."
StrCpy$PageReinstall_SAME_Field_2"Aggiungi/Reinstalla i componenti"
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 installert allerede.$\n$\nVelg hva du ønsker å 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$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$INIT_UNINSTALLER_RUNNING"Dezinstalator ju¿ jest uruchomiony."
StrCpy$SectionGroup_Shortcuts"Skróty"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
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_SAME_Field_1"${APPLICATION_NAME} ${VERSION} já está instalado.\nSelecione a operação que deseja 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á instalada.\nSelecione a operação que deseja realizar e clique em 'Seguinte' para continuar."
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$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} já está instalado.$\n$\nSelecione a operação que você quer realizar e clique Próximo 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$\nУкажите действие и нажмите Далее для продолжения."
StrCpy$UNINSTALL_MESSAGEBOX"Скорее всего, приложение ${APPLICATION_NAME} уже установлено в директорию '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy$UNINSTALL_MESSAGEBOX"Похоже, что приложение ${APPLICATION_NAME} не установлено в каталог '$INSTDIR'.\nВсе равно продолжить (не рекомендуется)?"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"Už je nainštalovaný"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Vyberte si, ako chcete nainštalova<76> ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Novšia verzia ${APPLICATION_NAME} je už nainštalovaná! Neodporúèam vám nainštalova<76> staršiu verziu. Ak naozaj chcete nainštalova<76> túto staršiu verziu, je lepšie najprv odinštalova<76> aktuálnu verziu. Vyberte operáciu, ktorú chcete vykona<6E>, a kliknite na tlaèidlo Ïalej pre pokraèovanie."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} je už nainštalovaná.\nVyberte operáciu, ktorú chcete vykona<6E>, a kliknite na tlaèidlo Ïalej pre pokraèovanie."
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$UNINSTALLER_REGISTRY_Detail"Zapisujem inštalaèné k¾úèe do registra"
StrCpy$UNINSTALLER_FINISHED_Detail"Dokonèené"
@@ -44,3 +39,5 @@ StrCpy $INIT_INSTALLER_RUNNING "In
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Tento odinštalátor vyžaduje admin prístup, skúste to znova"
StrCpy$INIT_UNINSTALLER_RUNNING"Odinštalátor je už spustený."
StrCpy$SectionGroup_Shortcuts"Zástupcovia"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_TITLE"Program je že nameščen"
StrCpy$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Izberite način namestitve programa ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"Novejša različica programa ${APPLICATION_NAME} je že nameščena! Ni priporočljivo namestiti starejše. V kolikor želite vseeno nadaljevati z namestitvijo, prej odstranite obstoječo različico. Izberite opravilo in pritisnite gumb za nadaljevanje."
StrCpy$PageReinstall_SAME_Field_1"Program ${APPLICATION_NAME} ${VERSION} je že nameščen. Izberite opravilo in pritisnite gumb za nadaljevanje."
StrCpy$UNINSTALLER_FILE_Detail"Zapisovanje programa za odstranjevanje namestitve"
StrCpy$UNINSTALLER_REGISTRY_Detail"Poteka zapisovanje namestilnika v register"
StrCpy$UNINSTALLER_FINISHED_Detail"Končano"
@@ -44,3 +39,5 @@ StrCpy $INIT_INSTALLER_RUNNING "Namestilnik je
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Program za odstranjevanje namestitve zahteva skrbniška dovoljenja."
StrCpy$INIT_UNINSTALLER_RUNNING"Program za odstranjevanje namestitve je že zagnan."
StrCpy$SectionGroup_Shortcuts"Bližnjice"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
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$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 Siguiente para continuar."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} ya está instalado.$\n$\nSeleccione la operación que desea realizar y haga click en Siguiente 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_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$INIT_UNINSTALLER_RUNNING"El des-instalador ya esta corriendo"
StrCpy$SectionGroup_Shortcuts"Accesos Directos"
StrCpy$ConfirmEndProcess_MESSAGEBOX_TEXT"Found ${APPLICATION_EXECUTABLE} process(s) which need to be stopped.$\nDo you want the installer to stop these for you?"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
StrCpy$OPTION_SECTION_SC_SHELL_EXT_SECTION"Status icons for Windows Explorer"
StrCpy$OPTION_SECTION_SC_SHELL_EXT_DetailPrint"Installing status icons for Windows Explorer"
StrCpy$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$PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE"Välj hur du vill installera ${APPLICATION_NAME}."
StrCpy$PageReinstall_OLD_Field_1"En nyare version av ${APPLICATION_NAME} är redan installerad! Det rekommenderas inte att du installerar en äldre version. Om du verkligen vill installera denna äldre versionen, är det bättre att du avinstallerar den nuvarande versionen först. Välj den åtgärd du vill utföra och klicka Nästa för att fortsätta."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} är redan installerad.\nVälj den åtgärd du vill utföra och klicka Nästa för att fortsätta."
StrCpy$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$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
StrCpy$PageReinstall_OLD_Field_1"${APPLICATION_NAME} uygulamasýnýn daha yeni sürümü zaten yüklü! Daha eski bir sürümünü yüklemeniz önerilmez. Gerçekten bu eski sürümü yüklemek isterseniz, ilk olarak geçerli sürümü kaldýrmanýz tavsiye edilir. Yapmak istediðiniz iþlemi seçin ve devam etmek üzere Ýleri týklayýn."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} zaten yüklü.\n\nYapmak istediğiniz işlemi seçin ve devam etmek için İleri tıklayın."
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} zaten yüklü.$\n$\nYapmak istediðiniz iþlemi seçin ve devam etmek için Ýleri týklayýn."
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$UAC_INSTALLER_REQUIRE_ADMIN"Для установки потрібні права адміністратора, спробуйте ще раз"
StrCpy$INIT_INSTALLER_RUNNING"Установка вже запущена."
StrCpy$UAC_UNINSTALLER_REQUIRE_ADMIN"Для видалення потрібні права адміністратора, спробуйте ще раз"
StrCpy$INIT_UNINSTALLER_RUNNING"Програма видалення вже запущено."
StrCpy$SectionGroup_Shortcuts"Ярлики"
StrCpy$PageReinstall_SAME_Field_1"${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
StrCpy$UAC_ERROR_LOGON_SERVICE"Logon service is not running, aborting!"
{\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.