You are here

[Outdated] PortableApps.com Launcher 1.0 Alpha 4

215 posts / 0 new
Last post
Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Responses
  • Wildcards in registry keys would be quite difficult to handle, but not useful in almost any cases, and so I do not propose to do it - yet at least.
  • I might implement Windows version requirements at some point, at least to say "This doesn't run on Windows 2000", but I don't think it tends to be worthwhile. Very few things don't work on Windows 2000, and if they don't they'll tend to crash and you'll understand that it doesn't work on that OS. And Windows 95/98/Me will soon be completely broken by the Launcher (and Installer) as we move to Unicode builds of NSIS; you won't even get to say "doesn't work on Windows 98", it'll just crash immediately. That's what happens with things compiled with NSISu.
  • I don't really feel like putting in firewall manipulation with yet another plug-in. I'm trying to avoid using plug-ins where practical as they tend to make things bigger than they need to be and there's also then the bother of unloading them. I might try implementing it in System::Calls (which I would likewise expect to be one liners).
  • I'm considering adding some code to the PortableApps.com Installer so that online installers can use an already-downloaded installer; but as for using an already-installed instance, I don't think that's generally a good idea, especially for version reasons. I would advise you to only use an online installer and not try copying an installation at all. I have no real intention of adding a fallback executable.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Major change

I've just committed a major backwards-incompatible change, to do with replacement variables now using the normal environment space. See this changeset for an updated help.html and more info.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
FileWrite* merged

I've merged FileWriteINI and FileWriteConfigWrite.

  • [FileWriteN]:Type=ConfigWrite|INI
  • [FileWriteINI]:NFile -> [FileWriteN]:File
  • [FileWriteINI]:NSection -> [FileWriteN]:Section
  • [FileWriteINI]:NKey -> [FileWriteN]:Key
  • [FileWriteINI]:NValue -> [FileWriteN]:Value
  • [FileWriteConfigWrite]:NEntry -> [FileWriteN]:Entry
  • [FileWriteConfigWrite]:NValue -> [FileWriteN]:Value

Now I'm moving drive letter updating into another type of FileWrite: Replace.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Drive letter updates

Yes, another change. I've moved drive letter updating into a new FileWrite type, Replace. Specify Find and Replace and whiz, it does a find and replace. This should be useful for some applications which may have things like Secret in them which aren't file mentions and shouldn't be updated, and where you just want to update e.g. file:///%PAL:LastDrive%/ to file:///%PAL:Drive%/. Before you could only do replacement of X:\ and X:/, now you can take the drive letter (and the colon) in any form.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Bruce Pascoe
Offline
Last seen: 12 years 2 months ago
Joined: 2006-01-15 16:14
...

Could you give me an example of how this would be used to emulate the old FileDriveLetterUpdate behavior? I'm having a bit of a hard time wrapping my head around just how this is going to work.

Also, won't the new method result in the drive letter being updated (thus wasting time) regardless of whether or not it actually changed? Firefox and Thunderbird for example take forever to launch when the drive letter changes, so the ability to not have it do those updates if they're not needed is a definite plus.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
No

If Find and Replace are the same, the replacement is skipped.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
New release

With all these big changes, you might want to do a new release once you're done.

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
PortableApps.com Launcher 1.0 Alpha 4 released

(I'm planning on not making a new thread until we get to beta, or possibly page 3 if it takes that long.)

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Debug messages

Debug messages are pretty hard to turn off; there's actually a bug that keeps them from ever being turned off.

!macro DebugMsg _MSG
	!ifdef DEBUG_ALL
		!define _DebugMsg_DEBUG
	!else
		!ifdef Segment
			!ifdef DEBUG_SEGMENT_${Segment}
				!define _DebugMsg_DEBUG
			!endif
 		!else
 			!define _DebugMsg_DEBUG
		!endif

should be

!macro DebugMsg _MSG
	!ifdef DEBUG_ALL
		!define _DebugMsg_DEBUG
	!else
		!ifdef Segment
			!ifdef DEBUG_SEGMENT_${Segment}
				!define _DebugMsg_DEBUG
			!endif
;		!else
;			!define _DebugMsg_DEBUG
		!endif

I just commented out two lines so _DebugMsg_DEBUG isn't defined unless one of the "bigger" debug constants is; the extra code is so people can put the fix in the appropriate code section with as little trouble as possible.

Also, what settings can verbose have?

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Ah yes

Sorry about that, I wrote it in a roundabout manner and didn't review it properly. What I had meant was to have a "global" debugging flag - so the !else should have been !else ifdef DEBUG_GLOBAL.

Currently verbosity is only at the compiler level; some time I'll be putting in a debug verbosity flag too.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
%PAL:DataDir% failing on paths with spaces

Looks like %PAL:DataDir% is failing on paths with spaces. For the KidSafe launcher, here's my launcher.ini:

[Launch]
ProgramExecutable=KidSafe\KidSafe.exe
DefaultCommandLineArguments=-SETTINGSDIR="%PAL:DataDir%"
AssignContainedTempDirectory=true
WaitForProgram=false

Regardless of whether I quote or unquote %PAL:DataDir%, KidSafe always gets the same result: an unquoted path. When the path contains spaces, KidSafe errors out and creates the data folder in the wrong spot; that's how I learned there was a problem in the first place.

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Quote the INI value?

Try quoting the INI value - it may be a problem with the Microsoft INI parsing engine.

DefaultCommandLineArguments='-SETTINGSDIR="%PAL:DataDir%"'

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Semi-works

That passes the quotes OK, but KidSafe still won't recognize the value. It could be a problem with a change I introduced earlier; I'll have to take a look.

Thanks for the tip!

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Kim_Wood
Offline
Last seen: 11 years 1 week ago
Joined: 2007-09-20 01:43
Newbie Question

Chris,

It's time to have a play with your new launcher. I have quickly made a simple launcher, and figured out the basics. It worked fine for me.

Now for a slightly higher degree of difficulty. Move an ini file to the c: drive. I cannot get a file copy to work. I am not clear on the syntax requirements under the [FilesMove] section of your help file. If I want to copy the junk.ini file from x:\PortableApps\AppName\junk.ini to c:\Documents and Settings\user\Application Data\AppName\junk.ini, and then back after running the portable app, the commands in the Launcher.ini file would look like.....?

Can you give me the two or three line example please? This will get me moving.

Regards,

Kim

Kim

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Relative to Data

You can only copy files inside Data (in accordance with the PortableApps.com Format).

To copy X:\PortableApps\AppNamePortable\Data\junk.ini to C:\Documents and Settings\user\Application Data\AppName\junk.ini:

junk.ini=%APPDATA%\AppName

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Kim_Wood
Offline
Last seen: 11 years 1 week ago
Joined: 2007-09-20 01:43
Thanks Chris

Thank you Chris,

I will experiment. There will be more dumb questions!

Regards,

Kim

Kim

scriptdaemon
Offline
Last seen: 4 years 4 months ago
Developer
Joined: 2008-10-10 17:40
What am I doing wrong?

Firstly, the launcher itself seems to require admin rights and if I cancel gives me error 1223. Secondly, after that pop up is closed, another appears stating that it cannot find appinfo.ini or launcher.ini when they are in the correct folder.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Not sure

It should only try to get admin if you have [Launch]:RunAsAdmin=try|force in ./App/AppInfo/launcher.ini.

Where are you putting everything, and how? Could you please enlighten me as to your entire directory structure and the contents of your launcher.ini?

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

scriptdaemon
Offline
Last seen: 4 years 4 months ago
Developer
Joined: 2008-10-10 17:40
Well.

I do use RunAsAdmin=try, but since it didn't find those two files at all I didn't think that's what caused it.

Both files are in F:\PortableApps\RevoUninstallerPortable\App\AppInfo

[Launch]
ProgramDirectory=RevoUninstaller\revouninstaller.exe
RunAsAdmin=try
SingleAppInstance=true

[FilesMove]
settings\settings.ini=%PAL:APPDIR%\RevoUninstaller

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
But it does

I think I see what the issue is now; unbeknownst to poor ol' me, the UAC plug-in is causing $EXEDIR to change in the inner (admin) instance. The very fact that it was trying to elevate showed me that either something was really badly wrong which I couldn't see or that you were indeed using RunAsAdmin - that gets checked before the launcher.ini stuff. I had never had a proper chance to test RunAsAdmin myself, and so I merely thought it should work. Now I'll need to try working out where the executable ends up when running as admin - I really must set up a Windows VM or go to Uni to check it out.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

scriptdaemon
Offline
Last seen: 4 years 4 months ago
Developer
Joined: 2008-10-10 17:40
So...

I found a bug? Biggrin

If it helps anything, it gives me that error whether or not I have admin privs or not, and even when I do it comes up with a popup asking to allow the program to do stuff to my comp (I suppose that's supposed to happen though with a program requiring admin privs?)

judeah666
Offline
Last seen: 9 years 10 months ago
Joined: 2009-03-28 15:53
Question Regarding Registry

1st - I'm Having Trouble With The Registry I Want To Have The HKLM And HKCU Backup. But The Launcher only Backups The HKCU. How Can I Have Both Of Them.

2nd - Some Of My Software Installs dll's in windows and system32 directory and you nethier have both can you add them

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Admin

HKEY_LOCAL_MACHINE requires running as administrator. If you want you can try [Launch]:RunAsAdmin but as scriptdaemon has observed it seems to have serious issues with it at the moment which I haven't yet been able to check up on. As for putting DLLs in %WINDIR% or sys32, you should be able to just have them in App\AppName (you may possibly need [Environment]:PATH=%PATH%;%PAL:AppDir%\AppName).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

judeah666
Offline
Last seen: 9 years 10 months ago
Joined: 2009-03-28 15:53
tnx

tnx for the fast reply. i will try it

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Three syntax changes in hg
  • Renamed [Launch]:AssignContainedTempDirectory to [Launch]:CleanTemp.
  • Renamed [Launch]:DefaultCommandLineArguments to [Launch]:CommandLineArguments.
  • Renamed [Launch]:SetOutPath to [Launch]:WorkingDirectory.

I did these to make them more accurate and the first two shorter as they were overly verbose. I thought of renaming [Launch]:ProgramExecutable to [Launch]:Run, and also of the possibility of then merging Run and CommandLineArguments into CommandLine, but I refrained.

Oh, and I think I've fixed RunAsAdmin as well.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Benedikt93
Offline
Last seen: 9 years 4 months ago
Joined: 2009-12-17 14:46
Backup results of a registry search

I did a feature request for a registry backup function which accepts wildcards in the keys some days ago.

I've now done some code to do something like this with the search function of the registry plugin
Include into your launcher if you want.

Link to the file: http://www.speedyshare.com/files/21132272/BackupRegistrySearch.nsh

; by Benedikt93

!include "Registry.nsh"

Function _BackupRegistrySearch

	Var /Global _HKey
	Var /GLOBAL _RegPath
	Var /GLOBAL _SearchKeys
	Var /GLOBAL _SearchValues
	Var /GLOBAL _SearchStrings
	Var /GLOBAL _SearchFor
	Var /GLOBAL _CaseSens
	Var /GLOBAL _Type
	Var /GLOBAL _SubKeys
	Var /GLOBAL _FileName
	Var /GLOBAL _Handle
	
	Var /GLOBAL _ResultPath
	Var /GLOBAL _ResultValueOrKey
	Var /GLOBAL _ResultString
	Var /GLOBAL _ResultType
	Var /GLOBAL _FoundItemNumber
		StrCpy $_FoundItemNumber 0
	
	Pop $_FileName
	Pop $_SubKeys
	Pop $_Type
	Pop $_CaseSens
	Pop $_SearchFor
	Pop $_SearchStrings
	Pop $_SearchValues
	Pop $_SearchKeys
	Pop $_RegPath
	Pop $_HKey
	
	StrCmp $_CaseSens 0 _NotCaseSensitive _CaseSensitive
	_NotCaseSensitive:
		StrCpy $_SearchFor "/NI=$\"$_SearchFor$\""
	_CaseSensitive:
		StrCpy $_SearchFor "/NS=$\"$_SearchFor$\""
		
	StrCmp $_Type "" _StartSearch 0
		StrCpy $_Type "/T=$_Type"
	
	_StartSearch:
		${registry::Open} "$_HKey\$_RegPath" "/K=$_SearchKeys /V=$_SearchValues /S=$_SearchStrings $_SearchFor $_Type /G=$_SubKeys /B=0" $_Handle
		StrCmp $_Handle 0 _Error 0
		
	_SearchLoop:
	
		${registry::Find} "$_Handle" $_ResultPath $_ResultValueOrKey $_ResultString $_ResultType
		StrCmp $_ResultType "" _End 0
		StrCmp $_ResultType "REG_KEY" _BackupRegKey _BackupRegValue
		
		_BackupRegValue:
			${registry::SaveKey} "$_HKey\$_ResultPath" "$_FileName" "/A=1 /N=$_ResultValueOrKey /G=0" $0
			StrCmp $0 -1 _Error 0
			IntOp $_FoundItemNumber $_FoundItemNumber + 1
			
		_BackupRegKey:
			${registry::SaveKey} "$_HKey\$_ResultPath\$_ResultValueOrKey" "$_FileName" "/A=1" $0
			StrCmp $0 -1 _Error 0
			IntOp $_FoundItemNumber $_FoundItemNumber + 1
	
		Goto _SearchLoop
	
		_Error:
		${registry::Close} "$_Handle"
		Push -1
		Return
	
	_End:
		${registry::Close} "$_Handle"
		Push $_FoundItemNumber
		Return
	
FunctionEnd

!macro BackupRegistrySearch HKey RegPath SearchKeys SearchValues SearchStrings SearchFor CaseSens Type SubKeys FileName

	Push "${HKey}"
	Push "${RegPath}"
	Push "${SearchKeys}"
	Push "${SearchValues}"
	Push "${SearchStrings}"
	Push "${SearchFor}"
	Push "${CaseSens}"
	Push "${Type}"
	Push "${SubKeys}"
	Push "${FileName}"
	
	Call _BackupRegistrySearch
  
!macroend

I think usage is self-explaning, but if not ask Wink

"Der Klügere gibt nach, deshalb regieren Dumme die Welt."

Benedikt93
Offline
Last seen: 9 years 4 months ago
Joined: 2009-12-17 14:46
Segment?

Sorry for the double-posting, but did you already read this?
If you want to include it, I think I'd now be able to put the code into a segment for the launcher after looking at its source a bit.
Tell me if I should do so.

[EDIT 1] I of course mean segment, not section

"Der Klügere gibt nach, deshalb regieren Dumme die Welt."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Seen but not intending to use

I've seen it but I'm not intending to put this in; it's a corner case (I've never come across anything which could benefit from something like that) and it adds to the general clutter still more (in some ways I'd like it if I could separate all segments into DLL files so you could just include what you need; it's not practical though, and it'd end up make things bigger again which is part of what I'm trying to avoid).

I think a general guideline for inclusion is "will be used by at least several applications". I could consider implementing a stripped down version but not yet in any case.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Benedikt93
Offline
Last seen: 9 years 4 months ago
Joined: 2009-12-17 14:46
OK

OK.

I'll still do this work as I'd need it for Steam Portable. When I've finished it, I'll drop a note here so anybody could include the code himself.

"Der Klügere gibt nach, deshalb regieren Dumme die Welt."

judeah666
Offline
Last seen: 9 years 10 months ago
Joined: 2009-03-28 15:53
I'll Wait For The Beta Release

I Think I Will Wait For The Beta Release. The Launcher Is Not Organize Enough And John Hasn't Add Anything yet.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Started

John and I had a long discussion yesterday which involved me implementing the things he had been going to implement; I've done one of the two things so far. John's changes have been entirely in the internals of the launcher, and trying to improve stability (we'd both been thinking about this and had slightly different solutions; the main difference is that in case of power failure mine tends more towards making sure you get your data back, John's makes sure the computer is left clean, particularly if the disk is removed which is something I hadn't really thought about much).

What do you think is not organised enough about the launcher?

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Stability

Maybe take a hint from wraithdu's Sandboxie Portable - it's got one launcher, SandboxiePortable.exe, for launching Sandboxie and one other launcher, CrashCleanup.exe, to bring back data, clean up, etc. after a crash. I've been thinking about the stability thing for some time, and this seems to be the best way, IMHO.
Benefits:
* Users can still get their data back
* The host PC can stay clean (and no worries about having the disk/USB stick removed - users would need to run CrashCleanup from the disk/USB stick)

Downsides:
* Users have to run a separate executable to clean up after a crash; that's somewhat inconvenient, but users will probably be willing to do it to get their data back.

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Nope

Part of our PA.c Format standard will be that if the drive is removed, the app should shut down and clean up the host PC, returning it to the state that it was before the app was run. Users won't be losing anything document-wise (since those are saved on their device and should have an auto-save in an app like OpenOffice.org) or bookmarks or email-wise (since those are also kept on the stick). But they will lose any transient settings that were in local registry or APPDATA. This is by design and will be required. We err on the side of (1) keeping the local PC unaffected and (2) ensuring that none of the user's personal data is left behind.

A similar situation will apply in a power outtage or PC crash. We will be storing backed up registry keys and appdata in a central location so our platform's failsafe can restore the PC to its original state when it boots up, removing the portable information and restoring all PC registry keys and appdata files. This is again for the two reasons stated above. Users are unlikely to lose anything important as mentioned above.

As an additional note, many apps crash on an unsafe eject as soon as they try to write to disk (Firefox and Thunderbird, for example), so you won't be losing anything from that. And as for registry keys and settings in AppData, many apps only save those settings out on exit and, since the app crashed (basically what happens in a power outtage or PC crash, too), no new data is in the registry or AppData to preserve anyway.

As for app crashes, the portable launchers will recover from that just as with anything else. The launcher is a separate process, so if FF crashes FFP shuts down just fine as always.

Sometimes, the impossible can become possible, if you're awesome!

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Had considered

I had considered it, but I was going to do a much cleaner implementation - single executable, detects the state of the last instance and continues on from there (i.e. it'd run the .onInit, Init, Post* and Unload hooks, skipping the Pre* and PreExec* hooks and the actual execution).

I still don't entirely agree with John's statements of what should happen, but I'm much more in favour of it after having thought about it extensively; I have engineered the launcher from the start so that data which gets copied locally is not deleted from the USB disk until the updated data is ready to be copied in (this doesn't address the issue though when the files which should be moved back or at least cleaned up are on the disk that got removed). But it is just that session's changes that are lost, not all your settings (or at least it won't be all your settings by the time I'm finished; currently applications that store things while running in the App directory will really get messed up).

Making sure things aren't left behind is pretty important.

There are still going to be times when we can't clear everything up, but we can try.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Multiple launchers for multiple executables?

Is there a way of creating multiple launchers for multiple executables? I haven't found a way of doing this, since it seems there can only be one launcher.ini file, but I've got a certain "pet project" I'd like to do in a week or so that will require multiple launchers, because it's got multiple executables with different functionality.

Thanks!

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Not Planned

As all ~100 of our apps and all the dev tests we have use only a single launcher except one (OpenOffice.org, which will be switching to a single launcher as well), we had decided not to support more than one EXE. If you could give more details about this app and why it requires distinct launchers, we might reconsider. But as of now, there is no need to add to the complexity of the launcher and the format.

Sometimes, the impossible can become possible, if you're awesome!

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
Not planned

JTHAs all ~100 of our apps and all the dev tests we have use only a single launcher except one (OpenOffice.org, which will be switching to a single launcher as well)

Good joke, John.
There are several games which have more than one launcher (e.g. one for the game and one for a LAN-Server). And there are other apps too. (If I remember correctly, CamStudio Portable has 4 launchers.)
Well, I don't care what's planned or not cause I'll never use the (always limited and never universal) PortableApps.com launcher. :evil:

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Command Line

Many of those extra launchers are only to feed specific command-line arguments. Those will be contained within the AppInfo.ini and separate icons will show up that feed those in without the need for multiple launchers. That's what we're doing with OO.o, for example. There may be a few outliers, of course, and I haven't personally tested all the Dev Tests. I'd meant to say all of the dev tests I've tried, not all of them.

We'll be adding the functionality of nearly all our other launchers into the universal launcher, so it will eventually serve the need of nearly all apps, rather than reinventing the wheel each time and having to maintain 100 different code branches. There no need to poo-poo it or be an ass about it.

Sometimes, the impossible can become possible, if you're awesome!

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
REAL Studio

The app I'm talking about is REAL Studio; before anyone starts yelling about me doing a commercial product,
#1 I'm not distributing REAL Studio, just a launcher, and
#2 I already got permission from REAL Software (actually got permission several months ago; I just haven't done anything with it until now).

REAL Studio has two components: the IDE and the Feedback utility. Because they're two separate apps, I need two separate launchers (unless I build two separate portable packages, but that's going to be very messy - especially since REAL Studio has the option to launch the Feedback app).
If it's better (and judging from your post, it might be), I could create a custom launcher; it wouldn't be hard to do, and it sounds like that would save you & Chris Morgan a lot of time & headaches.

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Second Launchers

Ok. I've been reconsidering my position on this anyway, so I think I have a solution. Chris, how about we support multiple launchers as an option. I'd like to stick with launcher.ini when there's just one for simplicity, if that works for you, too. For multiple, we could have them look for launcher-LAUNCHERNAME.EXE.ini, which makes it very easy to keep them separate.

So the launcher can check for launcher.ini first, if it's not there it checks for launcher-LAUNCHERNAME.EXE.ini, if that's not there, it just runs whatever is set in AppInfo.INI's Control - Start section. (If it finds itself there, it'll throw an error). Would that line of thinking make sense? We can ditch the EXE from the INI as well for prettiness if you'd like (just another line of code).

Sometimes, the impossible can become possible, if you're awesome!

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Great, thank you!

Glad to hear we're going to support multiple launchers! That makes things like RS much easier to implement.

Any way I can help with that?

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
I'll implement

I'll implement launcher-LauncherFileName.ini. In some ways it'd be nicer to have it in a single file, but we've got more than one INI section so it'd end up looking very ugly.

I reckon the default one should be called just launcher.ini:

  • AppNamePortablePlayer.exe - doesn't find launcher-AppNamePortablePlayer.ini and so uses launcher.ini
  • AppNamePortableSDK.exe - finds launcher-AppNamePortableSDK.ini
  • App\AppInfo
    • launcher.ini
    • launcher-AppNamePortableSDK.ini

In some applications it will be harder to decide which should be the "default" of more than one, but I think it'd be better for single applications to just have "launcher.ini". Of course, there's also the option of going back to how I used to do it - App\Launcher\AppNamePortable.ini (and make it App\AppInfo\Launcher\AppNamePortable.ini).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Implemented

I've implemented it now.

It's about time to do another release tomorrow. I'll see if I can manage it.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Old way?

Would you be happier going back to the old way of a Launcher directory with individual INIs in it? At this point, that may make more sense. And for anything we do automated with updating launchers or INIs in the installer or something later, we can just go through the list of INIs in that directory.

Sometimes, the impossible can become possible, if you're awesome!

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
App\AppInfo\launcher

OK, I'll do it in App\AppInfo\Launcher\AppNamePortable.ini.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
I've done that now

Also the splash screen is moved to App\AppInfo\Launcher (still splash.jpg, no support for different splash screens).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

judeah666
Offline
Last seen: 9 years 10 months ago
Joined: 2009-03-28 15:53
Just A Suggestion

In The Data Folder. Can't You Just Make it Like This.
An AppData, LocalAppData, WinDir Folders And Then Users Just Copy The File In There That the portable App Needed so that newbies like me don't get confused in the launcher.ini and this is more easy and practical.

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Once Done

Once this is done we're going to have sample launcher.ini files for simple apps (like just a command line or just an APPDATA directory) to make it easier.

Sometimes, the impossible can become possible, if you're awesome!

Mark Sikkema
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-07-20 14:55
Hi Chris,

I want to use your launcher as the launcher for Unicode NSIS Portable.
But I ran into a few specific NSIS Portable issues:

1. NSIS Portable is normally set-up to run NSIS.exe. But if I drag'n drop a file onto the portable launcher it will send the parameters to makensisw.exe.
But I do realize it will be work to implement this, probably just to be used by one specific app.

2. NSIS Portable needs 3 default executable's to wait for, before it can clean-up !

[Launch]
ProgramExecutable=NSIS\NSIS.exe
WaitForEXE=makensisw.exe
;=== really I would need some line like the following
WaitForEXE2=zip2exe.exe

Formerly Gringoloco
Windows XP Pro sp3 x32

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Hmm... maybe I should add a

Hmm... maybe I should add a WaitForEXE section. What do you think, John?

As for drag and drop, I think that it is quite plausible that it could be used in more than one application, and have something like ProgramExecutableWhenParameters.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
Agreed

I'd agree on both, as long as they are relatively simple adds.

Sometimes, the impossible can become possible, if you're awesome!

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
WaitForEXE - remember my code?

Remember the code I wrote earlier to handle WaitForEXE? I remember it had an issue or two (primarily that it would fail on restarting processes), but I could probably get those worked out pretty quickly. Luckily, I have Notepad++ on my USB stick so I can work on that even though my laptop's out of action.
Want me to update that code?

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
No

I've got a simpler way of doing it now, along slightly different lines, which won't suffer from that problem.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Curious

I'm curious as to how you'll do it. Mind sharing the details?

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
I'll share more than that

I'll share the code.

Format: [Launch]:WaitForEXEN values (thus plain WaitForEXE becomes invalid).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
Thanks for the code!

I take it ${|} is a statement end, much like { and } in C++?

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Just a single quote

${|} is the way of specifying a delimiter with LogicLib; literally, it's a single quote:

LogicLib.nsh, line 81!define | "'"

It's part of the single-line IfThen structure, making it so that the code inside comes as one argument rather than lots which is untenable with macros, so that it can be then used verbatim. It'd be perfectly valid to do something like ${IfThen} ${Errors} "StrCpy $0 $1"... but you wouldn't get syntax highlighting that way in any editors.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Both added

I've now added both. You can use ProgramExecutableWhenParameters and WaitForEXEN with the hg repo.

(Both were simple, especially the first, where it was turning:

${ReadLauncherConfig} $ProgramExecutable Launch ProgramExecutable

Into:

${GetParameters} $0
${IfThen} $0 != "" ${|} ${ReadLauncherConfig} $ProgramExecutable Launch ProgramExecutableWhenParameters ${|}
${IfThen} $ProgramExecutable == "" ${|} ${ReadLauncherConfig} $ProgramExecutable Launch ProgramExecutable ${|}

)

Unfortunately this has put me a little behind schedule and so I don't think I'm going to manage a release today. Just got a bit more polish to do. I might make it (I've got a bit under three quarters of an hour; if it's not up by then you'll know you need to wait until at least tomorrow).

Edit: not going to manage a release; primary reason: too many release notes to write in ten minutes. If you feel like going through the changesets in the hg repo and constructing release notes for me detailing all changes, please do. Biggrin

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Mark Sikkema
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-07-20 14:55
Cool, that's working nice !

Cool, that's working nice ! I'll do my next release with this!

I'm having a look around to do some more PA's with PAL, so it can be fully tested.

Formerly Gringoloco
Windows XP Pro sp3 x32

Mark Sikkema
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-07-20 14:55
A few more issues....

But please, do not let me put you of your next release! It can probably wait for next time, and I can pull the fixes of mercurial anyway !

1. What about implementing the NewTextReplace plugin, so we are able to update utf-16 files as well. Anyway this is the plugin which is used in UnicodeNsisPortable(but there it's named TextReplace.dll for compatibility). But it could wait till you're using unicode to compile.

2. What about appending a registry file, at the moment I got to do it this way:

[RegistryKeys]
PDF-XChangeViewerPortable=HKEY_CURRENT_USER\Software\Tracker Software\PDFViewer
PDF-XChangeViewerPortable2=HKEY_LOCAL_MACHINE\SOFTWARE\Tracker Software\PDFViewer

3. Shouldn't [DirectoriesCleanupForce] first backup it self, so keys couldn't accidentally be deleted from the host.

4. About the services, I'm trying mp3gain-win-full-1_2_5.zip, the launcher seems to register the service, but on exit the launcher goes into a heavy loop.
This is what my PAL ini looks like:

[Launch]
ProgramExecutable=MP3Gain\MP3GainGUI.exe

[Activate]
Registry=true

[RegistryKeys]
MP3Gain="HKEY_CURRENT_USER\Software\VB and VBA Program Settings"

[FileWrite1]
Type=Replace
File=%PAL:DataDir%\settings\MP3Gain.reg
Find=%PAL:LastDrive%\
Replace=%PAL:Drive%\

[Service1]
Name=MSCOMCTL.OCX
Path=%PAL:AppDir%\MP3Gain
Type=service
User=none
Display=MP3_Service
IfExists=skip

This is what I implemented in my regular launcher, and didn't give problems.

RegDLL "$EXEDIR\App\${APP}\MSCOMCTL.OCX"
...
ExecWait '"$PROGRAMDIR\$PROGRAMEXE" $R0'
...
UnRegDLL "$EXEDIR\App\${APP}\MSCOMCTL.OCX"

[edit: for your info, the loop is before any registry keys and the service gets cleanup]

Formerly Gringoloco
Windows XP Pro sp3 x32

guillaume.prevot
Offline
Last seen: 6 years 8 months ago
Joined: 2009-07-29 13:54
Great

Sorry if I shouldn't post in this forum.

But it's the first time I take a look at "what PortableApps.com Launcher may look like" and it looks very powerfull (service managment ?) and understandable (ini based).

Good luck and thank you

Bruce Pascoe
Offline
Last seen: 12 years 2 months ago
Joined: 2006-01-15 16:14
Drive letter replacement bug -- again!

Just ported SharpDevelop to Beta 4, and now I'm getting weird drive letter replacement behavior again. For example, in my default settings, I have the project path set to P:\Documents\Projects, with the LastDrive in DefaultData set to P:. However, when I run SD the first time, the path gets changed to this oddity:

P:L:\DocumentsL:\SharpDevelop Projects

My launcher.ini:

[Launch]
ProgramExecutable=SharpDevelop\bin\SharpDevelop.exe

[LiveMode]
CopyApp=false

[DirectoriesMove]
profile=%APPDATA%\ICSharpCode\SharpDevelop3.0

[DirectoriesCleanupIfEmpty]
1=%APPDATA%\ICSharpCode

[FileWrite1]
Type=Replace
File=%PAL:DataDir%\profile\SharpDevelopProperties.xml
Find=%PAL:LastDrive%\
Replace=%PAL:Drive%\

Also, the find/replace scheme seems like it would break if DefaultData contains default settings but no AppPortableSettings.ini--just like my HxD bug from a while back. DriveLetterUpdate was a better scheme, IMO.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
hg

Are you using the hg version? I realised what I'd done just after the last release and fixed it immediately (so that the "letter" becomes NONE, i.e. %PAL:LastDrive% = NONE:).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Bruce Pascoe
Offline
Last seen: 12 years 2 months ago
Joined: 2006-01-15 16:14
No

I was using Alpha 4. Still, there's the chance the string "NONE:" could legitimately occur in a DefaultData file, and this would cause errors. I still stand by my assertion that FileDriveLetterUpdate was better. If there's no last drive, then no substitution should be attempted at all; unfortunately find-and-replace is unconditional.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
"Hey diddle diddle the cat and the fiddle,

the cow jumped over the moon:"? Wink

I had wondered whether I should just do a quick string find for %PAL:LastDrive in Find, think I will now.

Find/replace is better... you couldn't find/replace file:///X/ with the old solution but you can now...

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Bruce Pascoe
Offline
Last seen: 12 years 2 months ago
Joined: 2006-01-15 16:14
...

No you can't--%PAL:Drive% and %PAL:LastDrive% both contain a colon. Unless that was a typo and you meant file:///X:/, in which case that would already have been picked up by ForwardSlashN.

I do have to concede that false positives are possible in both cases, however. Smile I'm just not sure search-and-replace gains me anything for the extra lines I need in launcher.ini.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
*Letter

That's why I added PAL:DriveLetter. I didn't mean file:///X:/ Smile Also, it's feasible that X:/ could be used in a file in a way that you don't want to replace, and you only want to replace it when it's got file:/// in front. Also there can be other messy situations. The main reason I added the *Letter variants was Eclipse Portable - it escapes the : with a \, and so it needs to use %PAL:DriveLetter%\: (I've been wondering about scrapping PAL:Drive but don't really think I need to).

Part of the reason I switched from the old way was that the ForwardSlashN and BackslashN method was just ugly. This is a much nicer-looking, pure solution. (Possibly even better would be naming the INI section "File Write N" rather than "FileWriteN"...)

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Bruce Pascoe
Offline
Last seen: 12 years 2 months ago
Joined: 2006-01-15 16:14
Don't add spaces

CamelCase is the de facto standard for INI sections and value names. Putting spaces in it might confuse the Windows INI parser too, but I'm not sure. Either way the spaces would make it uglier (IMO), not cleaner.

I can definitely tell you're a perfectionist, but don't try to make it too perfect, or PAL will never get out of alpha. Biggrin

One thing I'm curious about though: What program uses file:///X/? I've never seen a file URL without a colon after the drive letter. Certainly no browser will recognize such a path.

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Perfectionism

John and I are very similar in that trait...

Never fear though, you'll find this in Beta fairly soon now.

file:///X/ has been used in the past by Firefox; now I believe they've accepted the : and use it everywhere. A : in the URL used to seem evil though. Anyway, It was just an example Blum

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

OliverK
OliverK's picture
Offline
Last seen: 2 years 9 months ago
Developer
Joined: 2007-03-27 15:21
e: ? in file:///e:/ Its in

e: ? in file:///e:/

Its in GIMP Portable, was\is in screamer

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

MarkoMLM
MarkoMLM's picture
Offline
Last seen: 8 years 4 months ago
DeveloperTranslator
Joined: 2006-01-16 04:08
Updated German.nsh

Hi Chris,
I've updated the German.nsh with the new strings.
If I'll time for having a look at mercurail I'll update directly Wink (next time).

${LangFileString} LauncherFileNotFound "$AppNamePortable kann nicht gestartet werden. Bitte installieren Sie die Anwendung ggf. neu. (FEHLER: $MissingFileOrPath wurde nicht gefunden.)"
${LangFileString} LauncherAlreadyRunning "Es läuft bereits eine andere Instanz von $AppName. Bitte schließen Sie erst alle anderen Instanzen von $AppName, bevor Sie $AppNamePortable starten."
${LangFileString} LauncherAskCopyLocal "$AppNamePortable scheint an einem Ort ohne Schreib-Zugriff zu laufen. Möchten Sie eine temporäre Kopie auf Ihrer lokalen Festplatte erstellen und das Programm von dort aus starten?$\n$\nHinweis zum Datenschutz: Wenn Sie Ja sagen, werden Ihre persönlichen Daten aus $AppNamePortable temporär auf Ihre lokale Festplatte kopiert. Diese Daten werden zwar wieder gelöscht, sobald Sie $AppNamePortable schliessen, können aber unter Umständen trotzdem von Dritten gelesen werden."
${LangFileString} LauncherNoReadOnly "$AppNamePortable kann nicht direkt von einem Ort ohne Schreib-Zugriff gestartet werden und wird jetzt geschlossen."
${LangFileString} LauncherPathTooLong "Der Pfad zu $AppNamePortable ist zu lang.  Bitte verkürzen Sie den Pfad durch die Auslassen einiger über dieser Anwendung liegenden Verzeichnissse oder durch Kürzen der Verzeichnisnamen."
${LangFileString} LauncherNoUNCSupport "$AppNamePortable kann nicht aus einem UNC-Netzwerkpfad gestartet werden. Bitte ordnen Sie dem Netzlaufwerk einen Laufwerksbuchstaben zu und versuchen Sie es dann erneut."
${LangFileString} LauncherNoSpaces "$AppNamePortable kann nicht aus einem Verzeichnis mit Leerzeichen gestartet werden. Bitte ändern sie den aktuellen Pfad ($EXEDIR) und entfernen Sie alle Leerzeichen. Starten Sie dann die portable Anwendung neu.  Weitere Informationen erhalten Sie in der help.html."
${LangFileString} LauncherRequiresAdmin "$AppNamePortable erfordert zur Ausführung administrative Rechte."
${LangFileString} LauncherNotAdminTryAgain "Bitte 'Wiederholen' klicken, um die Authentifizierung erneut zu versuchen oder 'Abbruch' zum Beenden."
${LangFileString} LauncherNotAdminLimitedFunctionality "Einige Funktionen von $AppNamePortable werden nicht funktionieren, wenn Sie sie nicht als Administrator ausführen."
${LangFileString} LauncherNotAdminLimitedFunctionalityTryAgain "Klicken Sie 'abbruch' zum Beenden, 'Widerholen', um die Authentizierung erneut zu versuchen oder 'Ignorieren', um trotzdem weiter zu machen."
${LangFileString} LauncherAdminError "Ausführung als Administrator nicht möglich, Fehler $0"
${LangFileString} LauncherAdminLogonServiceNotRunning "$AppNamePortable erfordert administrative Rechte, aber der Windows Logon Service läuft nicht. $AppNamePortable kann nicht gestartet werden."

Paid for Software more or less?
What You need is OSS!

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Thanks

Just one thing I'd like to verify; the LauncherPathTooLong string was:
"Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürze Sie den Pfad durch die Auslassen einiger über dieser Anwendung liegenden Verzeichnissse oder durch Kürzen der verzeichnisnamen."

You've changed it to
"Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürzen Sie den Pfad durch die Auslassen einiger über dieser Anwendung liegenden Verzeichnissse oder durch Kürzen der Verzeichnisnamen."

There are two differences: you've added an "n" to "verkürze" to make it "verkürzen", and you've made the first letter of the final word ("verzeichnisnamen") capital.

I've committed it to the repository, it even says that you've committed it Smile

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

MarkoMLM
MarkoMLM's picture
Offline
Last seen: 8 years 4 months ago
DeveloperTranslator
Joined: 2006-01-16 04:08
Thank You for fixing some typos of mine ...

But I've found another one. Final:
"Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürzen Sie den Pfad durch Auslassen einiger über dieser Anwendung liegenden Verzeichnissse oder durch Kürzen der Verzeichnisnamen."

("die" in front of Auslassen was wrong, but now it's perfect Smile )

Paid for Software more or less?
What You need is OSS!

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
Bahnhof?

durch Auslassen einiger über dieser Anwendung liegenden Verzeichnissse

I don't understand. What should the user do? Pardon

And a suggestion (fixes two typos and has a different end):

${LangFileString} LauncherNotAdminLimitedFunctionalityTryAgain "Klicken Sie 'Abbruch' zum Beenden, 'Wiederholen', um die Authentizierung erneut zu versuchen oder 'Ignorieren', wenn Sie trotzdem fortfahren möchten." 
MarkoMLM
MarkoMLM's picture
Offline
Last seen: 8 years 4 months ago
DeveloperTranslator
Joined: 2006-01-16 04:08
The user should shorten the path

... hast Du eine bessere Idee? / do You have a better idea?

Thank You for fixing the typos, I found another: "Authentizierung" should be better "Authentifizierung"

${LangFileString} LauncherNotAdminLimitedFunctionalityTryAgain "Klicken Sie 'Abbruch' zum Beenden, 'Wiederholen', um die Authentifizierung erneut zu versuchen oder 'Ignorieren', wenn Sie trotzdem fortfahren möchten." 

Paid for Software more or less?
What You need is OSS!

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
lol

I know (I've read the english string ;)). At the moment, I don't have a better idea, but the current string looks a bit strange IMO.
(Ich weiß nicht, ob ein unerfahrener Nutzer versteht was gemeint ist bzw. was er machen soll.)

Thanks for fixing the other typo. Smile

Simeon
Simeon's picture
Offline
Last seen: 9 years 5 months ago
DeveloperTranslator
Joined: 2006-09-25 15:15
Suggestion

Wie wärs mit: "Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürzen Sie den Pfad, indem Sie diese Anwendung woanders hin kopieren oder den Verzeichnisnamen ändern."

Not perfect aber imho besser verständlich.

"What about Love?" - "Overrated. Biochemically no different than eating large quantities of chocolate." - Al Pacino in The Devils Advocate

MarkoMLM
MarkoMLM's picture
Offline
Last seen: 8 years 4 months ago
DeveloperTranslator
Joined: 2006-01-16 04:08
Thank You Simon ...

... but I don't like "woanders hin".

How about:"Der Pfad zu $AppNamePortable ist zu lang. Bitte wählen Sie einen kürzeren Verzeichnisnamen oder einen Installationsordner der weniger Zeichen enthält." ?

Paid for Software more or less?
What You need is OSS!

Simeon
Simeon's picture
Offline
Last seen: 9 years 5 months ago
DeveloperTranslator
Joined: 2006-09-25 15:15
I thought so

I didn't like it either.

I'd put the part about the installation folder at the beginning because its more effective (If I have my folder deep enough, changing the folder name wont help me).

Seit wann enthält ein Ordner Zeichen??? Wink
What about "installationsordner dessen Pfad kürzer ist"?

You (as a mod) could maybe move all these comments to a new thread as we are kinda hijacking Chris's thread.

"What about Love?" - "Overrated. Biochemically no different than eating large quantities of chocolate." - Al Pacino in The Devils Advocate

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
Hmm,

how about:
"Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürzen Sie den Pfad ihres Installationsordners". Short and simple.
I don't think that we're hijackers 8)

Simeon
Simeon's picture
Offline
Last seen: 9 years 5 months ago
DeveloperTranslator
Joined: 2006-09-25 15:15
sounds good

lets hear markos opinion.

"What about Love?" - "Overrated. Biochemically no different than eating large quantities of chocolate." - Al Pacino in The Devils Advocate

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Just tell me what to do

Biggrin

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
Dance! :)

(Guess I'm a hijacker now)

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
This should teach me

to create a thread in Localization Discussion. I thought about it but didn't get round to it... maybe I should and then move your comments to it (a slow task as it involves duplicating each comment manually).

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

MarkoMLM
MarkoMLM's picture
Offline
Last seen: 8 years 4 months ago
DeveloperTranslator
Joined: 2006-01-16 04:08
Keep it simple is allways a good idea :-)

So we have the German final:

${LangFileString} LauncherFileNotFound "$AppNamePortable kann nicht gestartet werden. Bitte installieren Sie die Anwendung ggf. neu. (FEHLER: $MissingFileOrPath wurde nicht gefunden.)"
${LangFileString} LauncherAlreadyRunning "Es läuft bereits eine andere Instanz von $AppName. Bitte schließen Sie erst alle anderen Instanzen von $AppName, bevor Sie $AppNamePortable starten."
${LangFileString} LauncherAskCopyLocal "$AppNamePortable scheint an einem Ort ohne Schreib-Zugriff zu laufen. Möchten Sie eine temporäre Kopie auf Ihrer lokalen Festplatte erstellen und das Programm von dort aus starten?$\n$\nHinweis zum Datenschutz: Wenn Sie Ja sagen, werden Ihre persönlichen Daten aus $AppNamePortable temporär auf Ihre lokale Festplatte kopiert. Diese Daten werden zwar wieder gelöscht, sobald Sie $AppNamePortable schliessen, können aber unter Umständen trotzdem von Dritten gelesen werden."
${LangFileString} LauncherNoReadOnly "$AppNamePortable kann nicht direkt von einem Ort ohne Schreib-Zugriff gestartet werden und wird jetzt geschlossen."
${LangFileString} LauncherPathTooLong "Der Pfad zu $AppNamePortable ist zu lang. Bitte verkürzen Sie den Pfad ihres Installationsordners"
${LangFileString} LauncherNoUNCSupport "$AppNamePortable kann nicht aus einem UNC-Netzwerkpfad gestartet werden. Bitte ordnen Sie dem Netzlaufwerk einen Laufwerksbuchstaben zu und versuchen Sie es dann erneut."
${LangFileString} LauncherNoSpaces "$AppNamePortable kann nicht aus einem Verzeichnis mit Leerzeichen gestartet werden. Bitte ändern sie den aktuellen Pfad ($EXEDIR) und entfernen Sie alle Leerzeichen. Starten Sie dann die portable Anwendung neu.  Weitere Informationen erhalten Sie in der help.html."
${LangFileString} LauncherRequiresAdmin "$AppNamePortable erfordert zur Ausführung administrative Rechte."
${LangFileString} LauncherNotAdminTryAgain "Bitte 'Wiederholen' klicken, um die Authentifizierung erneut zu versuchen oder 'Abbruch' zum Beenden."
${LangFileString} LauncherNotAdminLimitedFunctionality "Einige Funktionen von $AppNamePortable werden nicht funktionieren, wenn Sie sie nicht als Administrator ausführen."
${LangFileString} LauncherNotAdminLimitedFunctionalityTryAgain "Klicken Sie 'Abbruch' zum Beenden, 'Wiederholen', um die Authentifizierung erneut zu versuchen oder 'Ignorieren', wenn Sie trotzdem fortfahren möchten." 
${LangFileString} LauncherAdminError "Ausführung als Administrator nicht möglich, Fehler $0"
${LangFileString} LauncherAdminLogonServiceNotRunning "$AppNamePortable erfordert administrative Rechte, aber der Windows Logon Service läuft nicht. $AppNamePortable kann nicht gestartet werden."

Paid for Software more or less?
What You need is OSS!

Bart.S
Offline
Last seen: 7 months 2 weeks ago
Developer
Joined: 2008-07-23 07:56
One more point ;)

Seems that I forgot the final dot. (LauncherPathTooLong)
So it's more a work in progress than a final. Blum

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
In

Your "point" is in.

I also put in one on LauncherAdminError (in English and German) which I'd left out.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

John T. Haller
John T. Haller's picture
Offline
Last seen: 4 hours 4 min ago
AdminDeveloperModeratorTranslator
Joined: 2005-11-28 22:21
New Release / New Thread?

Think it's about time for a new release and new thread?

Sometimes, the impossible can become possible, if you're awesome!

computerfreaker
computerfreaker's picture
Offline
Last seen: 12 years 6 months ago
Developer
Joined: 2009-08-11 11:24
I second the motions

I second both motions.

200 comments over 3 pages - it's getting difficult to find newer posts. Definitely time for a new thread.
Plenty of new stuff in Mercurial right now - time for a new release, IMHO.

I'm looking forward to this! Biggrin

"The question I would like to know, is the Ultimate Question of Life, the Universe and Everything. All we know about it is that the Answer is Forty-two, which is a little aggravating."

Chris Morgan
Chris Morgan's picture
Offline
Last seen: 8 years 9 months ago
Joined: 2007-04-15 21:08
Almost

I was thinking I should implement your modifications before moving PAL to Beta (and a new thread); however possibly not. The thread is very long already. Currently I think pre-1.0 tasks are:

  • Fix RegistryKeys in Wine (restoring key into registry doesn't seem to work)
  • Disable services (while it's a plug-in it's fairly big, something like 25KB compressed, need to sort out the dependencies null-byte thing and go back to plain NSIS code)
  • Copy launcher.ini somewhere and cope with detecting disk removal and cleaning up
  • Related to the above: handle restoring things in such a situation where the files are on the disk which was removed, next time it's started (e.g. when a file is moved to App).

Oh, and my new documentation.

I am a Christian and a developer and moderator here.

“A soft answer turns away wrath, but a harsh word stirs up anger.” – Proverbs 15:1

Pages

Topic locked