My suggestion is just:
Unicode < yes (default) | no >Post your alternative instructions/syntax suggestions and we will vote on the final syntax if required.
Thoughts and comments are also welcome...
36 posts
Unicode < yes (default) | no >Post your alternative instructions/syntax suggestions and we will vote on the final syntax if required.
IMHO true/false is better than on/offOriginally Posted by MSG View PostCurrent installer attributes use true/false or on/off. I'd say on/off is most suitable here, because unicode is not a small addition such as AllowRootDirInstall (true/false). Rather, it compiles to a completely different executable.
No, this is a A vs W API thing, there will never be more options. Unless you mean auto...Originally Posted by MSG View PostBut should there be only two options? Are there perhaps situations where a third option would be helpful/necessary?
I thought you wanted UTF8 files without BOM to be treated as UTF8 and not backwards compatible with older ansi scripts?Originally Posted by MSG View PostAs for the default value, if the nsi wasn't saved as UTF8 (or other unicode formats), I'm thinking it might make sense to auto-switch back to ansi building for backwards compatibility. In such a case, 'unicode on' could still be used to force unicode building.
<true | false | auto (default) >Where auto uses unicode if the main .nsi has a BOM
Yeah, something like an auto mode. Your true/false/auto suggestion seems to cover it all.Originally Posted by Anders View PostNo, this is a A vs W API thing, there will never be more options. Unless you mean auto...
I was thinking about ansi scripts. UTF8 without BOM should definitely be compiled as unicode by default.Originally Posted by Anders View PostI thought you wanted UTF8 files without BOM to be treated as UTF8 and not backwards compatible with older ansi scripts?
better yes, but inconsistent with previous syntaxOriginally Posted by Anders View PostIMHO true/false is better than on/off
The SetXYZ pattern should only be used by flags that can be changed at runtime. I'm also not sure if "Encoding" is specific enough...Originally Posted by redxii View PostSetEncoding < ansi (default) | unicode >
The SetXYZ pattern should only be used by flags that can be changed at runtimeI think SetEncoding sounds better than Unicode <true|false|...> .
That's not how it's been done in the past, though: http://nsis.sourceforge.net/Docs/Chapter4.html#4.8.2.4Originally Posted by Anders View PostThe SetXYZ pattern should only be used by flags that can be changed at runtime.`
That is true, but those instructions are really old and we cannot change them now...Originally Posted by MSG View PostThat's not how it's been done in the past, though: http://nsis.sourceforge.net/Docs/Chapter4.html#4.8.2.4
Will this not be confusing? What about the uninstaller?Originally Posted by Afrow UK View PostHow about UnicodeInstall.
We support VC6+, MinGW and cross compiling on POSIX and VC6 is our preferred compiler but this thread has nothing to do with which compiler is used for the stubs, we simply need to figure out what the syntax in the .nsi should look like. (We will provide stubs and plugins for ansi and unicode)Originally Posted by LoRd_MuldeR View PostBTW: I don't know which compiler you use to create the NSIS stubs, but if you use MSVC2010, the binaries won't even run on Windows 2000. They certainly won't run on Win9x, which makes any compatibility options for Win9x pointless then. If you stick with MSVC2008, then Windows 2000 is still supported, but that one certainly doesn't need the No-Unicode workaround. I have no idea what the last MSVC was that still supported Win9x. But unless you plan to stick with that old MSVC forever, Win9x compatibility switches become pointless...
The stubs (and most of the plugins) are written in plain C and don't use the CRT so what do you hope to gain by updating the compiler? (Not even VS11 has full C99 support) Not only do you gain nothing, MS are actually dropping support for some of the switches we use to generate smaller files (/OPT:NOWIN98, filealign etc)Originally Posted by LoRd_MuldeR View Post...and we wouldn't have to stick with an outdated compiler (e.g. VC 6) for the stubs.
The code in SVN already produces ansi and unicode stubs and plugins when you build, there is no extra work that needs to be done...Originally Posted by Pawel View PostBut, if this is not possible, making ANSI and Unicode in one package is not bad idea... but I think it need much more work.
Unicode true | false | auto (default)that's what i'd prefer to see as it seems to best cover what would appear in compiles attempted be if from those who have remained using the official release or moved over to the unicode release.
+1Originally Posted by Pawel View PostI would say, there should be NSIS 3.0 that supports only Windows XP+, fully Unicode.
And I agree with above posts. Drop ANSI/Win9x/NT4 support. Leave it in NSIS 2.4x line.
But, if this is not possible, making ANSI and Unicode in one package is not bad idea... but I think it need much more work.
There is not much reason to drop NSIS support for Windows 2000 yet. If your software doesn't run on Windows 2000, it's MUCH better to have your installer exit cleanly with a "Sorry, this software doesn't run on Windows 2000" than having it crash/fail with a "Not a valid Win32 executable!" And yes, some people are still using Windows 2000. Also keep in mind that Unicode is supported on Windows 2000 just fine. It's Windows 9x (and maybe NT 4.0) that didn't support Unicode! So, in my opinion, we should drop ANSI support in NSIS 3.0 along with any Windows 9x support, but keep the Windows 2000 support for now. If there was a reason to drop Windows 2000, then this would be compiler incompatibility. But Anders said that they currently prefer VC6, so this doesn't seem to be an issue ^^Originally Posted by Koopa View Post+1
I'd drop ANSI in 3.0 as well, as I'd drop support for operating systems < XP.
Win 2000 doesn't get any security related update anymore and for those people, who still depend on these systems, you still provide 2.4x related updates for some time. I guess all agree, that the whole Win9x line isn't worth to be mentioned anymore..
Unicode is the future, ANSI simply the past, but I'd may agree with an ANSI/Unicode hybrid package, because it will take some time, until the majority of the NSIS plugins are available as Unicode version unless you find another way to make those plugins available in Unicode NSIS.
soTarget <x86|amd64|ansi|unicode> [...]
Target ansi = Similar to 2.46
Target unicode == Target x86 unicode
Target amd64 == Target unicode amd64 ("Target amd64 ansi" is not a valid combination, x64 will always be unicode)