Skip to content
⌘ NSIS Forum Archive

LockedList plug-in

320 posts

Afrow UK#
That's a bug if it's the first plug-in call (was not initializing global variables such as the stack pointer). If you use it in the callback then it should be fine. Will fix for next version. Someone is reporting a crash but on a window which updates its caption every 100ms (not surprised).

Stu
Animaether#
Originally Posted by Afrow UK View Post
Someone is reporting a crash but on a window which updates its caption every 100ms (not surprised).
Yikes...
yikes #1: why would that crash?
yikes #2: why on Earth would an application update its caption 10 times per second??
( not necessarily in that order )

I've got one that updates its caption every second.. I stick the time in it (taskbar is set to auto-hide, might as well make use of the titlebar screen real estate) ..but 10 times per second? huh.
Pawel#
This is my application. It change title of other appliaction, to show some useful information. It doeasnt have to be 100ms but now it is. In final build it will be probably 500ms (it can't be >1s)
I use Stu's plugin in my installer and it crash when it is trying to kill that application with our title (but only unicode build, ansi build works ok...)
And i think , it is because, in some way Process name in application list is displayed as data from title bar I change every x ms...
I hope Stu will find way to fix it.
-Pawel
Animaether#
hmmm.. as far as I can tell, it only grabs the title once.. must be affecting something deeper down 🙂
Afrow UK#
Turns out it was just a buffer overflow. I am not sure why because dynamically allocating the buffer instead of statically seems to have fixed it. I have also increased the buffer length to 1024 characters and fixed the IsFileLocked bug.

Stu
Animaether#
confirming the IsFileLocked bugfix. Unfortunately it doesn't recognize the locked DLL as being locked; I guess that might be a distinction similar to why there is an AddFile and an AddModule?

It correctly recognized a text file I opened a file handle to (with another app), so that part works if nothing else 🙂
Afrow UK#
Yep it will only work on files that have a handle open on them (DLL's do not when they are locked). And yes using AddFile on DLL will not work.

Stu
Animaether#
Gotcha - makes sense (in that weird and twisted Microsoft-state-of-mind kind of sense) 🙂
Animaether#
one more minor item request...
If the list is empty, could the Next button text revert if /ignore is specified? I just noticed that if I specify the /ignore flag, have a locked file, then unlock that file and the list goes empty stating no further programs need to be closed.. the Next button still reads (the /ignore-supplied string) "Ignore".
glenncarr#
Originally Posted by glenncarr View Post
Is the source for this plug-in available? If not, have you considered open-sourcing it?
Sorry, I'm a dolt -- just found it in the package. 🧟
glenncarr#
Quickly compiled and ran a few of the examples on Vista64...
- After the initial Welcome page, no list was displayed on the second page
- Back, Next, and Cancel buttons are active, but nothing happens when clicking them
- Have to force the installer to close (system control menu/buttons don't work)

Any suggestions?
glenncarr#
Originally Posted by Afrow UK View Post
Which example causes this? I am running Windows 7 x64 and have not had any issues.

Stu
All of them.
Afrow UK#
I can only assume something such as anti-virus software is blocking it. Does SilentSearch work?

Stu
glenncarr#
Compiling and running LockedListTest.nsi with /S crashes with this info:
Problem signature:
Problem Event Name: APPCRASH
Application Name: LockedListTest.exe
Application Version: 0.0.0.0
Application Timestamp: 49769baa
Fault Module Name: StackHash_fd00
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Code: c0000005
Exception Offset: 00000138
OS Version: 6.0.6002.2.2.0.256.6
Locale ID: 1033
Additional Information 1: fd00
Additional Information 2: ea6f5fe8924aaa756324d57f87834160
Additional Information 3: fd00
Additional Information 4: ea6f5fe8924aaa756324d57f87834160
How do you typically debug this? I've built it in Visual Studio 2008, and I'm trying to attach to my installer exe instance with no luck, so I'm probably missing something obvious. I'd be glad to help if I can.
Afrow UK#
Make sure the source code is in NSIS\Contrib\LockedList then set the build configuration to Debug (or Debug Unicode if you're using Unicode NSIS). After rebuilding the NSIS installer you can then attach VS to it.

Glad you have VS!

Stu
Alfaromeo#
Still have the dependency issue.
It failed to load the Dialog on a fresh XP PC with the following error in the event viewer.

Resolve partial assembly failed for Microsft.VC90.CRT.Reference error message. The referenced assembly is not installed on your system.

Please let me know
MrSpock77#
Originally Posted by Alfaromeo View Post
Still have the dependency issue.
It failed to load the Dialog on a fresh XP PC with the following error in the event viewer.

Resolve partial assembly failed for Microsft.VC90.CRT.Reference error message. The referenced assembly is not installed on your system.

Please let me know
I have the same problem. Our installer does not work in XP with LockedList. Microsoft.VC90.CRT is missing...

Any help is highly appreciated.
Afrow UK#
Please try v1.4. The DLL had an XML manifest in it defining Microsoft VC90 CRT as a dependency.

Stu
MrSpock77#
Originally Posted by Afrow UK View Post
Please try v1.4. The DLL had an XML manifest in it defining Microsoft VC90 CRT as a dependency.
Thanks! It works!
Alfaromeo#
That rocks...Works as expected. Thanks
A requirement is to make the label control transparent and the list contol a little more small.Sicne I'm using UMUI this covers up all the screen .
Please advise.
Afrow UK#
You'll need to use SetCtlColors for the transparency and SetWindowPos API for the list (among others). It may be easier to resize the list in the dialog resource in Visual Studio and rebuild.

Stu
Alfaromeo#
I know the file which will is likely yo be locked by our application , hence is there an option to target that file alone with a if condition to detect whether that file is locked or not.
Check that and show the dialog if necessary.
Afrow UK#
You can use the SilentSearch function for that but be warned the process can take a little time for modules (even on super fast machines) and even longer for file handles. Hence why the search occurs while the screen is visible.

If you just want to make the label transparent the control ID is defined in resource.h.
You need to use InitDialog and Show plugin calls and InitDialog pushes the window handle onto the stack (just like InstallOptions).

Stu
maxwell72#
/noprograms option for dialog isn't working since v1.2
text always returns to it's default value.
just me?

Osman
Animaether#
Originally Posted by maxwell72 View Post
/noprograms option for dialog isn't working since v1.2
text always returns to it's default value.
I don't use it - but I can confirm the error.

The problem is in the source code; it references PARAM_SEARCHING in the part of the code dealing with the /noprograms flag. Must be a copy/paste-effected regression 🙂
Alfaromeo#
Was digging the day to display a message when the file is locked.

This is the flow of UI

Welcome
License Page
Directory
Install FIles
Finish

In the main section I have this code:

LockedList::IsFileLocked "<Path to FIle">

Pop $R0

I do not want toshow the UI of Locked list , just detect the file

Your expertise is needed