Skip to content
⌘ NSIS Forum Archive

Unicode

573 posts

Wizou#
No, because people wanting to target Windows 9x & such still need ANSI installer & ANSI plugins.
However I have created a new version of the plugin API, mostly compatible with the current version, that allows plugins to work with both ANSI & Unicode installer (even if the plugin itself is compiled as ANSI or Unicode), making the conversions transparently.
I will commit that soon to SVN.
CrushBug#
Hold it. Are you saying that there could be an official release from the main NSIS page with both ANSI and Unicode versions in the same package?

If this is true, this is HUGE for us, as we are only allowed by our legal department to use the versions of NSIS that come from the main page/official site. We are not allowed to use other versions (Unicode NSIS from scratchpaper, etc.)
Anders#
@CrushBug: Official SVN has working unicode build (It is pretty much the same code as the fork, at some point the merge will be complete hopefully)
Pawel#
Originally Posted by Wizou View Post
No, because people wanting to target Windows 9x & such still need ANSI installer & ANSI plugins.
However I have created a new version of the plugin API, mostly compatible with the current version, that allows plugins to work with both ANSI & Unicode installer (even if the plugin itself is compiled as ANSI or Unicode), making the conversions transparently.
I will commit that soon to SVN.
Wizou,
Is it possible to write src\Docs\src\*.but files with utf8 encoding (and Halibut could parse it and create output html files with default utf8 encoding, that HTML Help Help Workshop could compile to chm)?
Would be much simple for me, if it use this codepage, not default windows.
Could someone with skills look into it? Or, this is to much work, and it is not worth...
-Pawel
Wizou#
I'm not much aware about Halibut, and your demand is quite independent from porting NSIS code to Unicode.. I guess I won't be doing that soon..
Maybe someone else will look into it..
akatik#
In Unicode NSIS this plug-in works incorrectly.

Is there any other plug-in to get IPs of the computer or may be anybody could help with the solution for this plug-in?
Afrow UK#
If the plug-in is not Unicode then you will need to rebuild it.

How about this? http://www.codeproject.com/KB/vbscript/ipaddress.aspx

Stu
akatik#
Originally Posted by Afrow UK View Post
If the plug-in is not Unicode then you will need to rebuild it.
Does rebuild mean anything more than compiling nsi-script via Make NSISW (Unicode) program? This plug-in is dll - how can I rebuild it?
And also I failed to understand how and what for to use a2u.exe program.

Originally Posted by Afrow UK View Post
Actually dll on C++ with code for determining IP-interfaces of the computer I'll create by myself. I was interested why former plug-in don't work.
jpderuiter#
To get the IP address, have a look at the IpConfig plugin:
HrantOhanyan#
Here the NSIS Armenian translation!
timufea#
Building under Linux

I have downloaded nsis-2.46-Unicode-src.zip and am attempting to build the makensis utility under Linux. The command I am using is:

scons UNICODE=yes SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no PREFIX=/xp-e/Program\ Files/NSIS PREFIX_DEST=/tmp/nsis install-compiler
One minor problem was that I had to rename the 'Scons' directory to 'SCons'.

A more serious problem are these errors:

In file included from Source/build.cpp:24:
build/urelease/config/nsis-version.h:3:19: error: tchar.h: No such file or directory
In file included from Source/manifest.h:22,
from Source/build.h:30,
from Source/build.cpp:26:
Source/tstring.h:24:21: error: windows.h: No such file or directory
In file included from Source/build.h:22,
from Source/build.cpp:26:
tchar.h and windows.h are presumably MS Windows files, which wouldn't make a lot of sense for building a Linux executable.

I can build a Linux version of makensis using the official (non-Unicode) version of nsis 2.46 without any problems.
timufea#
Thanks Anders. I've just tried that, but a Linux build fails with the error "No version of Visual Studio compiler found".

There's a note in the TODO.txt file: "Make Unicode version compile on other compilers / platforms.", so I guess that it currently only builds on Windows.
Anders#
I don't really see how a VS compiler error message is related to unicode. Are you able to compile the ansi version? (TODO.txt has not been touched in years AFAIK)
timufea#
I get the same error if I try to compile the SVN ANSI version (i.e. without the 'UNICODE=yes' option).

The note in TODO.txt was added by 'wizou' on 2010-03-26.
Anders#
The problem might be with scons and not nsis (scons did some major changes recently, try both 1.2 and 1.3 and whatever the latest version is) It might also help if you post the full scons command you used (I can't build the unicode version myself, so I can't really help there)
timufea#
I was using scons 1.3.0, but I've just downloaded and tried the latest version (2.0.1) - unfortunately with the same symptoms. I don't have a copy of 1.2 to try. Version 1.3.0 works fine with nsis 2.46 - which makes it seem likely that something has changed in nsis.

The full scons command that I am using is in my original post.
Anders#
Originally Posted by timufea View Post
The full scons command that I am using is in my original post.
Doh!

I know I had to revert to scons 1.2 to build, but that is on windows. Why it tries to use the VS toolchain on POSIX, I have no idea. IIRC there is some scons switch you can use to force the toolchain, TOOLSET= maybe... (There are several older forum threads about building on POSIX, have you checked those for hints?)
f0rt#
It looks to me that the "No version of Visual Studio compiler found" issue was introduced by the "added MSVS_VERSION option to scons command-line to specify which compiler to use" change committed into the subversion repository as revision 6110.

nsis.svn.sourceforge.net/viewvc/nsis/NSIS/trunk/SConstruct?r1=6102&r2=6110

A Microsoft Visual C++ build environment is explicitly defined In line 180 of the SConstruct file.
In my humble opinion the build environment should be automatically detected by scons
and an explicit definition of the build environment is counterproductive.

I assume the same problem also occurs if you try to natively build on a Windows platform with mingw32 (www.mingw.org).
Anders#
Yeah, I don't think wizou has done any testing on anything other than recent versions of VS
Wizou#
I tried with VS 6.0, VS 7.1 Toolkit, VS 8.0 Express.
Scons seemed to work with them.

However, note that only VS 8.0 can be used to compile Unicode version of NSIS as only VS 8.0 contains a C++ Standard Runtime Library that contains the necessary Unicode classes.
nsnb#
Plans to Merge Unicode NSIS with Mainstream NSIS?

Quick question: Are there any plans to merge Unicode NSIS with mainstream NSIS?
Anders#
Originally Posted by nsnb View Post
Quick question: Are there any plans to merge Unicode NSIS with mainstream NSIS?
The merging is almost complete, with the right setup, you can compile unicode nsis from the official SVN today
MaGoth#
Greetings 🙂
Tell me please how to solve this problem:

In the script calls
Code:
System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "C:\1.mp3") i .r0'

Depending on your line when you compile the setup file, the function either does not find the file 1.mp3, or can not identify the driver device via MCI, or compile the setup file does not complete and displays a message that the file test. Exe can not be created. 🙁

In version Nsis ANSI this function works correctly. 🙄
Using version Nsis-Unicode (2.46)


MfG MaGoth, WoG.ru-Community.
MaGoth#
Originally Posted by Anders View Post
MCIWndCreateW maybe?
Tnx.
No, it does not WIN API, a generic driver for sound without using external players, only the operating system.
This option will not work. He was tested the day before the first, like many others.

The function works correctly, it was tested in parallel and in Nsis ANSI 2.46, the result of the compilation of which was fully working file test.exe. In this version the sound is!

When compiling the same file in version Nsis UNICOD 2.46, errors occur.
Hence the conclusion, this script unicode itself is not correctly passes parameters to this function. 🙁


MfG MaGoth, WoG.ru-Community.
Animaether#
OutFile "$%temp%\temp.exe"
Section
  System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "c:\1.mp3") i .r0'
  SendMessage $0 0x0490 0 0 $1
  IntCmp $1 0 nosup
    SendMessage $0 0x0465 0 "STR:play"
    Sleep 1000 /* match to sound length otherwise the sound immediately stops playing? */
  nosup:
SectionEnd 
Edit: the 'sleep' only applies to Sections, presumably.. stick it in .onInit or .onGUIinit and it'll work fine (but that little window will be somewhere back in z-order)
MaGoth#
Originally Posted by Anders View Post
does not work in 2.46 ansi either for me, so what do I know
Test example:

OutFile "test.exe"
  SetCompressor /solid lzma
  !include "MUI2.nsh"
  !insertmacro MUI_PAGE_INSTFILES
  !insertmacro MUI_UNPAGE_INSTFILES
  !insertmacro MUI_LANGUAGE "English"
  Name "Test"
  ShowInstDetails nevershow
  ShowUnInstDetails nevershow
  Var hmci
  !define APP_NAME "mci.sound"
  !define SND_NAME "1.mp3"
Function .onInit
  SetOutPath $PLUGINSDIR
  File "${SND_NAME}"
  System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0, t "$TEMP\${SND_NAME}") i .r0'
  StrCpy $hmci $0
  SendMessage $hmci 0x0490 0 0 $0
  IntCmp $0 0 nosup
  ShowWindow $hmci SW_HIDE
  SendMessage $hmci 0x0465 0 "STR:play"
nosup:
FunctionEnd
Section "Dummy Section" SecDummy
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  Sleep 1000
  SendMessage $hmci ${WM_CLOSE} 0 0
SectionEnd 
For tests:
1. Locate the file - 1.mp3 in the same folder as the script *.nsi.


PS. Everything works fine in ANSI, but it does not work in UNICODE. 😢


MfG MaGoth, WoG.ru-Community.