![]() |
#1 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
LogEx plugin
I have created a new Logging plugin:
http://nsis.sourceforge.net/LogEx_plug-in With this plugin you can: - Open a new or existing logfile, and append strings to it. - Copy this string to the Status Listbox and/or Statusbar. (like DetailPrint) - Append an existing file to the log file (esp. usefull when executing a console app) --- Add a prefix to each new line of this file. --- Choose which lines from this file to append. Example: code: Please give your comments. JP de Ruiter |
![]() |
![]() |
![]() |
#2 |
Junior Member
Join Date: Feb 2007
Posts: 2
|
stack problem
Hi,
I found your plugin for logging and try to use it. There is a little bit problem with LogEx::Write function, which totaly destroy (clean) the stack (maybe more 'pops' then 'pushs'). I didn't tested another functions in library. In other way, library looks very usefull. Best regards Pavel Palecek |
![]() |
![]() |
![]() |
#3 | |
Major Dude
Join Date: Feb 2007
Posts: 672
|
RE: stack problem
Hi,
Thanks for trying. ![]() Quote:
It did always read the max number of parameters, so when you specified less parameters then max, there where more pops then pushes. ![]() I did fix this (I changed the order of parameters: optional parameters first, and check if they are valid) Also did the following: v0.2 - Fixed stack bug. - Added parameter "bAppendToFile" to Init function - Changed the way AddFile function reads the file (read the file at ones in a buffer allocated with VirtualAlloc) - Added comments in sourcecode See the plugin page at http://nsis.sourceforge.net/LogEx_plug-in for version 0.2 Hope you can use this plugin. JP |
|
![]() |
![]() |
![]() |
#4 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
I found a small bug with v0.2
When the function AddFile was used with an empty file, the installer crashed. I uploaded a new version: 0.3. It checks the filesize, and if zero returns right away. Best regards, Jan Pieter |
![]() |
![]() |
![]() |
#5 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
P.S.: the example in the first post doesn't work anymore.
See http://nsis.sourceforge.net/LogEx_plug-in for a valid example. JP |
![]() |
![]() |
![]() |
#6 |
Junior Member
Join Date: Feb 2007
Posts: 2
|
Re: RE: stack problem
Hi,
plugin works very well, in my case, now. Thank you Pavel Palecek |
![]() |
![]() |
![]() |
#7 |
Junior Member
Join Date: Mar 2007
Posts: 2
|
Problems with Append
I am trying to write a script using LogEx. It installs SQL Express and then reboots. I seem to only get log entries from after the reboot.
I tried using the bAppendToFile: code: Which created a file named "bAppendToFile" on my desktop. I also tried: code: Which didn't seem to create a file at all. I may have my syntax wrong, could you post an example with the correct syntax for appending to a file? Thanks. |
![]() |
![]() |
![]() |
#8 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hello djg72,
thanks for trying this plugin! You pointed my to a small error in the readme file: In the readme file I talked about 'bAppendFile' , while I actually use 'bTruncateFile'. I fixed it now. Thanks for that. Now to your problem: I used the so called 'Hungarian' variable namestyle. This means that I added a 'b' in front of the variable name when it's a boolean variable. So bTruncateFile is a boolean variable. To use truncation (when the logfile already exist, all data will be erased), use the following code: When you use the following code:code: and the logfile already exists, the existing data will not be deleted.code: Hope this will help you. Best regards, Jan Pieter |
![]() |
![]() |
![]() |
#9 |
Junior Member
Join Date: Mar 2007
Posts: 2
|
Thanks
Thank you for your reply. I had originally tried using the line you suggested and it didn't work. Thank you also for clearing up that 'bTruncateFile' and 'bAppendFile' are the true and false of the same variable.
I figured out my problem was I tried to open the logfile in the .onInit function which was trying to write to a directory that didn't exist. Once rebooted, the directory existed and the logfile could be written. I changed: code: To this: code: Maybe this will help someone. Thanks again for your help and this plugin works great. |
![]() |
![]() |
![]() |
#10 |
Junior Member
Join Date: Jul 2007
Posts: 37
|
I'm getting a "ÿþ" when I try to append a few particular files to the log.
They are logs from the most recent version of MS SQL Express so I'm thinking it's an encoding issue (i.e. not plain text). Any ideas? |
![]() |
![]() |
![]() |
#11 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Can you send me a log file?
I don't have SQL server installed right now. Regards, JP |
![]() |
![]() |
![]() |
#12 |
Junior Member
Join Date: Jul 2007
Posts: 37
|
It's because the SQL server log uses UTF-Little Endian encoding rather than ASCII.
It works if I convert the logfile to asciI "c:\type unicode.txt > ascii.txt". My only problem is that "type.exe" isn't anywhere on my windows install so I'm having problems running it with "exec" or with the "execdos" plugin. |
![]() |
![]() |
![]() |
#13 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
It's 'part' of the command shell.
try: '$SYSDIR\cmd.exe /c "type unicode.txt > ascii.txt"' |
![]() |
![]() |
![]() |
#14 |
Junior Member
Join Date: Jul 2007
Posts: 37
|
Or:
ReadEnvStr $R0 COMSPEC ExecWait '"$R0" /C TYPE "c:\summary.txt" > "c:\SummaryAscii.txt"' Thanks a bunch!!! |
![]() |
![]() |
![]() |
#15 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Your welcome.
Thanks for using my plug-in. |
![]() |
![]() |
![]() |
#16 |
Junior Member
Join Date: Apr 2008
Posts: 5
|
Hi,
I'm using your plugin and it's really helpful ![]() I have one minor issue with it: when using logex::Close, the log file I generate gets 2 blank lines at the end. Is there a way to avoid having blank lines at the end of the file ? Thanks |
![]() |
![]() |
![]() |
#17 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi,
great to hear you like my plugin. About your issue: I have never seen this. All my generated log files end without extra lines. Can you give me a piece of code with which I can reproduce this? BTW, you mentioned that this happens when you use ::Close. Does this mean that if you don't use ::Close, the logfile does not have these extra lines? Best regards, Jan Pieter |
![]() |
![]() |
![]() |
#18 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi,
I looked in it a little further, and I was able to reproduce your issue. It turned out that I never closed the plugin properly in my own installer ![]() I fixed the plugin, so you shouldn't see this issue anymore with v0.4 (see http://nsis.sourceforge.net/LogEx_plug-in) Thanks for pointing me to this ![]() Regards, Jan Pieter |
![]() |
![]() |
![]() |
#19 |
Junior Member
Join Date: Apr 2008
Posts: 5
|
Hi,
You are right, I did not have the blank lines when NOT using logex::Close , with plugin version 0.3 . I just downnloaded and installed version 0.4 and it now works perfectly :-) Thanks a lot! |
![]() |
![]() |
![]() |
#20 |
Junior Member
Join Date: Oct 2008
Posts: 4
|
Read right on the file
I tried your plugin and found it to be quite usefull. I have only one problem with it: the file cannot be read while it is opened via your plugin. I would suggest the to change the dwShareMode parameter in the CreateFile function at least to 1:
if(!strcmp(buf,"true")) { popstring(buf); // Get Second parameter from the stack (should be the log filename) // Open an existing file and overwrite, or create a new file, without sharing hFile=CreateFile(buf,FILE_WRITE_DATA,1,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL); }// else open an existing file and append, or create a new file, without sharing else hFile=CreateFile(buf,FILE_APPEND_DATA,1,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,N ULL); |
![]() |
![]() |
![]() |
#21 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hello baxi,
good suggestion. I updated the plugin, you can find it here: http://nsis.sourceforge.net/LogEx_plug-in Can you please confirm that it's working, because I'm not able to test the plugin right now. Regards, JP |
![]() |
![]() |
![]() |
#22 |
Junior Member
Join Date: Oct 2008
Posts: 4
|
Hi,
I tried it and its working fine Baxi |
![]() |
![]() |
![]() |
#23 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Thanks for trying and letting me know.
I hope you find this plugin usefull JP |
![]() |
![]() |
![]() |
#24 |
Junior Member
Join Date: Nov 2008
Posts: 5
|
LogEx with NSIS Unicode branch
Hi JP,
I have been using your plugin for several weeks now and it worked fine so far. Just today I switched to the unicode build of nsis available at http://www.scratchpaper.com/, since we needed to support unicode languages in our installer. Since then, it seems that your plugin doesn't work any more. I copied the LogEx.dll to the new plugin subfolder and don't get any errors on compiling. When I run the installer, it creates a file named "t" in the installer's directory, and doesn't create any logfiles any more. Any ideas on this? I think it may be due to the fact that the whole installer script is now provided as UTF8-encoded file rather than ANSI. Thanks for your efforts, Stefan |
![]() |
![]() |
![]() |
#25 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi Stefan,
since more people asked for Unicode support, I decided to implement it in the LogEx plugin. (It turned out to to be quiet easy actually). I updated the plugin, you can find it here: http://nsis.sourceforge.net/LogEx_plug-in I tried it with non-Unicode, and that works. Can you please confirm that it's working for Unicode as well? Regards, JP |
![]() |
![]() |
![]() |
#26 |
Junior Member
Join Date: Nov 2008
Posts: 5
|
Hi JP,
thanks for your quick response! In tried the update immediately (well... immediately as i read your post ![]() I still have the same issue with the "t" file in the setup.exe directory. When opening it with notepad, I can see that there are several lines with one character. It contains t's and f's, so my guess is that LogEx accidentally logs the calls to the LogEx routine itself. I use it like this: code: The call to Init seems to create the "t" file, and all succeeding calls to Write seem to add one line with the letter t or f to the file, most probably depending on which parameters I use. At the point of the init call, the directory for INSTALL_LOGFILE already exists. Any idea what I'm doing wrong here? Thanks, Stefan |
![]() |
![]() |
![]() |
#27 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi Stefan,
OK, so appearantly it isn't that easy. I installed the Unicode version, and got the same problems you have. I'm not sure what the problem is, I haven't found it so far. I'll let you know when I found the solution. JP |
![]() |
![]() |
![]() |
#28 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi Stefan,
it took some longer than I thought, but I finally have made a (separate) Unicode plugin. It is included in the zip file from http://nsis.sourceforge.net/LogEx_plug-in. Hope you can still use it. Best regards, JP P.S.: Also used the new NSIS 2.42 API library with this version (0.7) |
![]() |
![]() |
![]() |
#29 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
I uploaded v0.7.1, which now uses the PluginCallback function from the new NSIS API lib, so /NOUNLOAD is no longer required.
Regards, JP |
![]() |
![]() |
![]() |
#30 |
Junior Member
Join Date: Nov 2008
Posts: 5
|
Hi JP,
just noticed your post, I definetely can still use it and will try it asap. Thanks for your efforts! Stefan |
![]() |
![]() |
![]() |
#31 |
Junior Member
Join Date: Nov 2008
Posts: 5
|
Hi again,
I tested the new version but still have the same issue as before. I also tried with the provided example in the zip file: converted to unicode, compile (success), execute (file t with singular character per row) I went as far as deinstalling both the normal and the unicode version of nsis and installing a fresh 2.42 unicode version, so I won't accidentally use the wrong version. Still the same... I removed the /NOUNLOAD parameter as well. For LogEx, I first just copied the dll in the unicode folder to the nsis plugin directory. Also tried extracting everything in the zip to the nsis root dir, leaving me with one LogEx.dll in \Plugins and one LogEx.dll in Plugins\Unicode. Neither version works for me... Any ideas? Stefan |
![]() |
![]() |
![]() |
#32 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi Stefan,
Removing the /NOUNLOAD in the Unicode version appearantly doesn't work. But when I use the /NOUNLOAD, the Unicode version works OK. Can you try the attached Unicode example? It isworking fine here. I will ask jimpark about the /NOUNLOAD. Regards, JP |
![]() |
![]() |
![]() |
#33 |
Senior Member
Join Date: Sep 2007
Posts: 204
|
I was able to make the LogEx plugin work simply by using the right pluginapi.lib. However, the DosEx plugin needs to be ported over also for the exampleu.nsi to work.
![]() Unicode NSIS advocate -- http://www.scratchpaper.com for latest build and source. |
![]() |
![]() |
![]() |
#34 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi Stefan,
I released a new version of the LogEx plugin, which in combination with the new NSIS 2.42 Unicode (not available yet) will work without the /NOUNLOAD. Best regards, JP P.S.: jimpark, you're right, I forgot to mention that the ExecDos plugin does not work with Unicode. I used a logfile created with the non Unicode ExecDos plugin which I converted to Unicode manually. |
![]() |
![]() |
![]() |
#35 |
Junior Member
Join Date: Nov 2008
Posts: 5
|
Hi JP,
using your latest plugin version, it works without any other changes ![]() ![]() |
![]() |
![]() |
![]() |
#36 |
Junior Member
Join Date: Mar 2009
Posts: 16
|
Hi JP, I'm using your plugin, version 0.7.2, thank you.
Normally it works just fine, but it seems to leave dirt on the stack when the current page isn't InstallFiles. My installer has just one single custom page and no standard pages. I want to add to the log file but not to the details window, because there is no details window! LogEx::Write false "text" should work, but the stack is dirty afterwards. Another issue that I'm having is that even after LogEx::Close the installer can't delete the logfile: Delete $logfile doesn't do anything (I verified that the $logfile holds the full path). Last edited by silo5; 23rd March 2009 at 13:46. |
![]() |
![]() |
![]() |
#37 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi silo5,
as I'm on vacation right now, I'm not able to look into your problem. But I'll have a look at it as soon as I can. Regards, JP |
![]() |
![]() |
![]() |
#38 |
Junior Member
Join Date: Mar 2009
Posts: 16
|
Enjoy your vacation!
|
![]() |
![]() |
![]() |
#39 |
Major Dude
Join Date: Feb 2007
Posts: 672
|
Hi silo5,
thanks, I did enjoy my vacation indeed. About your issues: The first one is because of me being lazy: It only checks for a "true", and doesn't expect a "false". In fact I expect that "false" is written to the logfile instead of "text"... I will fix this in a new version, but for now you can use code: instead. As no "true" is found, it assumes it's false. When checking for your second issue, I found that the logfile is released as soon as Logex::Close is called. (The logfile is locked indeed while the Logex plugin has it opened). Also calling Delete $logfile afterwards removed the logfile from my system. Can you give me a script in which this issue happens, so that I can reproduce it? Regards JP |
![]() |
![]() |
![]() |
#40 | ||
Junior Member
Join Date: Mar 2009
Posts: 16
|
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|