Archive: Files List


Hello,

I am a newbie user. Please forgive my stupid questions.

How do I go about finding out what files are packaged in my installer? My app is customized for various clients -- all dont get the same #of dlls/services/...

Therefore I build only the dlls client-x needs and copy them to C:\BuildInstall\Dlls directory. In my script I use:
File C:\BuildInstall\Dlls\*.* to add all the dlls into the installer.

Now, when client-y needs a different set of dlls I can simply copy them over to C:\BuildInstall\Dlls and recompile the install script to generate a new installer.

The drawback is that I no longer have a list of what dlls are packaged in the installer.

So, during the installation, when I want to do something specific to each dll, say, register each of them, I need to know what dlls exist on the client machine.

How can I do that?

Thanks,
Harsh Potlapalli


Ok, that is a pretty tall order.
Try:


IfFileExists "$INSTDIR\12112.dll" reg12112 noreg12112
;other things here or you can add a 0 in place of the
;reg12112 which means it goes to the next line
reg12112:
;Register do what you need to do
noreg12112:

What this does is lets you choose what you want to do for registrating the DLL. If the certain DLL exists, then you write the code for registrating it. The "reg12112" can be replaced by a zero so that it skips to the next line. The "noreg12112" is supposed to be a placer for if the person doesn't have the dll. It can also be renamed. You cannot have the same "tag" more than once.

-Duane

Re Files List
I guess I did not phrase my question correctly. I want to make an "on-the-fly" list of files being installed. More explicity, I want to make a list of dll's, services, proxies and applications as they are being copied/installed on the client machine.

Then I can parse the list for specific files and then do client specific things.

Thanks for your patience,
Harsh Potlapalli


Ok, I got your question. But to answer it, No. There is no program (for NSIS) like that avaliable. My Suggestion is to create an item like that, but it would be hard and would leave more instruction to the Client computer. Another suggestion is just create different "packages". What that would do is install certain DLLs for Certain computers. But for the "On-the-fly" part. NSIS doesn't support anything like that. I have no clue what this is for, but I sorry.

-Duane


Files List contd.
I can see your point about sequentially checking for the existence of specific dll's and then branching (regdll, noregdll, etc.).

A work-around I am trying is:
File *.dll <--- for all my regular dll's
File *ps.dll <--- for all my proxy-stubs
File Services\*.exe <--- for all my services
File Apps\*.exe
....

Followed by
RegDll *.dll <--- to register all (incl. the ps) dll's.
Not sure if this will work -- I think the full path name is required.

How can I register my services?
FooService.exe /regserver

There are about a dozen services in this package. Any fast way to do this?

Thanks,
Harsh


I don't know. Umm, just try it in the sections, but you can try e-mailing justin about it. But this is as far as I get.

Nice talking to you,
Duane


Use batch files, e.g.


dir /l /b /On > filelist.dat

would be a lowercase (/l), bare (/b), sorted (/On)list of whatever was in the directory you ran it on. You can do a DIR *.dll or whatever. Try http://www.stu.qmw.ac.uk/primer/DOS.html for starters, then do a search on Google. Should get you started. To start them from NSIS you can
ExecShell START batch.bat SW_SHOWMINIMIZED

-=Gonzotek=-