I already have a working NSIS script. Can I leverage it to create a Unicode installer?Yes. Most scripts will convert very easily to a Unicode install script. Usually, all that needs to be done is convert the NSI script file from an ANSI text file to a UTF-16LE file or as of 2.42.3, UTF-8 file. This can be done via Window's notepad.exe which has an option to save a file as Unicode. Another way is to use the a2u converter. Note that if you are using only ASCII characters in your NSI script, then as of 2.42.3, it will be recognized as UTF-8 and no reencoding will be required. The only tricky part is if you are using the System plugin. Make sure that you are not calling the ANSI specific Win32 API. Most such API end with the letter A, for example: MessageBoxA(). Such API should either be converted to the tchar version such as MessageBox() or the wide-char version such as MessageBoxW(). Also, starting with version 2.38.1, the parameter type specifier 't' acts like a TCHAR*. It will specify a Unicode string in the Unicode version of NSIS and it will specify an ANSI string in the ANSI version. This should make your script conversion much easier. Some Windows API like GetProcAddress() only take ANSI strings, so you should still look at your System calls carefully. Such API should use the new 'm' as the type specifier. What Unicode encodings does Unicode NSIS support?
Unicode NSIS supports UTF-16LE, the Windows default, and as of 2.42.3, it supports UTF-8. UTF-16LE requires a BOM in the front of the file. UTF-8 does not require a BOM and Unicode NSIS will read UTF-8 files with or without a BOM. Notepad.exe, for example, will add a BOM to UTF-8 files but most Unix tools will not unless explicitly told to. In any event, all the NSI, NSH files should be in some Unicode encoding supported by Unicode NSIS. The license file should also be either an RTF file, or a Unicode text file (UTF-16LE or UTF-8). Where's the large string version of the Unicode NSIS?What you are downloading since version 2.37.3 is the large string version of NSIS. I found that with the short strings, modifying the environment path was dangerous as many users have environment paths beyond 1024 characters long. So I've opted to make 8196 the default string length of the Unicode version of NSIS. There was hardly any difference in size of the installers I was creating with the bigger string lengths. With compression, the difference in string sizes seem not to matter. However, the ANSI version offered on this site is the short string version (1024 characters long). This is to keep it consistent with the official NSIS distributable. If you want the large string version of the ANSI version of NSIS, go to the special builds page. What languages does Unicode NSIS support currently?The following are the list of languages currently supported in the Unicode version of NSIS.
How do I submit new language files or updates to language files?For Unicode-only language files or language files that require Unicode to get access to the full character set of the language, please submit them to me at [jim at scratchpaper dot com]. If you are submitting a change to the ANSI language files, please use the NSIS translation forum. What happened to the coffee donation link?No one wanted to buy me any coffee and it seemed like I was panhandling. If you really want to buy me some coffee, you can Paypal me to my e-mail address. :) What is your e-mail address?My e-mail address is my first name at this domain address. |
