Tool to track application installer actions? (Win) - windows

I need to find out all the file system and registry operations that installer of some application performs. Is there a software tool for this?
OS is Windows XP, if that matters.

Look into the Windows SysInternals Utilities.
Specifically RegMon & FileMon

I'm not sure about tracking file system changes, but you can export the Windows registry as text before and after the install, and then use a diff tool to see what's changed. There's an O'Reilly hack about that here.
You could conceivably do the same with a DIR/S at the root of your drive, although it would be pretty time consuming.

Why not use one of those "uninstall monitoring programs" ?
Total Uninstall is the first that comes to mind, although there is a bunch of them, really.

This site has a list of some installer monitors.

Related

Installation program on a network share

I have a freeware software, which i want to install on a network share. The reason is, if the software is installed on a network share, all users which has access to this network share folder should be able to use the program.
Now, I run the setup.exe on my machine and choose on the step "destination installation" my network share \sharename\TestFolder.
The software was installaing on this sharefolder and after the installation it was possible to run the program on my computer without any errors and use it..
After that I try to start the program on other client but there is always an error message, that it starts with a false operator.
Now my question is, is there a software, which can observe on which files the program want to access when I make double click on the (program.EXE).
Thank you, I hope you can help me.
Yes, there are several tools that can monitor or observe system changes performed by a setup.exe.
Many of these tools are quite old and may not operate correctly in new versions of Windows. The most recent one I found that looks acceptable was EMCO MSI Package Builder. I never tested the monitor feature, but it is at least an updated capture product.
In my experience these monitor tools capture way too much low-level system stuff, and you will need to spend quite a bit of time to sort out what is really needed for the software to operate. If you have experience with software development you may get just as much information from using a System Internals tool such as RegMon, FileMon or ProcMon. See Microsoft site: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx . These tools are exceptionally useful and known for their small size and great feature set. You can run a ProcMon on the launch of the application executable.
It is also possible that the setup.exe is a wrapper for an MSI file. These files can be viewed with free tools such as Orca and EMCO MSI Package Builder and you can basically see what registration settings are needed for the application to operate. Try opening a command prompt and write setup.exe /a and see if it offers to create an "administrative installation point" - or similar.
If I were to guess I'd say that the software needs to have COM servers registered locally, registry keys added to each local computer and possibly you need to install a couple of runtimes on each system - for example Microsoft C runtime of a particular version. This is just a wild guess. What is the name of the software? If it is a .NET application you may need assemblies installed to the Global Assembly Cache GAC.

What kind of software shows one what files are beeing installed on the HDD during .exe or .msi install process?

I remember having seen a windows software that shows one (in realtime) what files are beeing installed/extracted on the HDD and what keys are written in the registry during an .exe or .msi install process, but I don't remember what kind of software it was.
Was is maybe some kind of sandbox or a sysinternals tool?
Can anyone help me?
I think the sysinternals suite has utilities for recording changes from filesystem and registry (regmon and filemon).
Its a sysinternals tool that I use, called Process Monitor. http://technet.microsoft.com/en-us/sysinternals/bb896645
As I found out there are tools developed exactly for this purpose. Namely:
SpyMe Tools
Total Uninstall
What Changed
Sysinternals tools are great too, but you have to use good filters if possible otherwise, you'll have an extreme information overflow.

Registering Windows Programs to Installed Programs List

As you know, Windows has a "Add/Remove Programs" system in the Control Panel.
Let's say I am preparing an installer and I want to register my program to list of installed programs and want it to be uninstallable from "Add/Remove Programs"?
Which protocols should I use. Any tutorials or docs about registering programs to that list?
I am coding with python and I can use WMI (Windows Management Instrument) or Win32 API. IMHO, it is done with Registry keys but I am not sure with it.
I also want to execute an uninstaller upon the Uninstallation to remove installed files. Any related docs or tutorials are highly appreciated. Thanks.
As stated on IRC:
"Windows keeps its uninstall information in the registry"
Its in HLLM\Software\Microsoft\Windows\CurrentVersion\uninstall\ keys.
You need a few things from the Win32 API, but I belive there's a fair amount of Python support for the win32 API.
Basically, a key in ...\Uninstall\ with a unique name (like "MyApp") with a few special values stashed in there. Add/Remove programs looks through there.
Its pretty self-explanatory.
If you are developing for Windows platform I think using Windows Installer from Microsoft won't be a problem.
You can check documentation of Windows Installer from Microsoft.com Windows Installer Page
Inno Setup is open source so perhaps you can get some ideas from that.

is there any tool or software that will give the list of dlls and registry data that an application is using?

Is there any tool that give the list of dlls, registry loc and other files/data that an application need when it gets launched?
I basically need this info to know what are all such files/data that IE6 uses when it get launched in windows XP? So that, I would try to get the answer why versions of IE are tightly coupled with windows OS and also we are trying an experiment how to run IE6 on vista or win7? Not thru existing XP mode of windows 7. But like an virtualized application?
Thanks for any inputs.
procmon http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
For DLL dependency walker
At the command line: tasklist /M
IE6 is part of the OS, and as such has dependencies, either directly or indirectly, on basically everything in %windir%/system32. You might be able to find a subset that "works good enough" but you'll always have something that is a little wonky because of some mis-matched DLLs.

What directory should my installer install an app on Vista?

I've nearly completed developing a game for Windows and I'm curious where I should have the installer install it. I know it used to be in "Program Files" but has that changed under Vista?
I know that World of Warcraft now installs under Users/Public/Games... what is the Microsoft-recommended location for games?
In Vista, the recommended directory is still %PROGRAMFILES%.
Note that in Windows 7, Microsoft has enabled the creation of true per-user installations, including support for per-user Program Files. This is a feature of Windows Installer 5.0, and you can read more about it here:
http://msdn.microsoft.com/en-us/library/dd408068(VS.85).aspx
You should use the Environment variables.
Namely %PROGRAMFILES% for you.
Just read the question a little more thoroughly. From my experience of Vista, most of the gubbins still install to %PROGRAMFILES%. Perhaps the /users/public... path is somewhere where things can install (and update) without having to get admin perms all the time. (A complete guess)
Looks like you should use SHGetKnownFolderPath to ask for the location of the FOLDERID_Games KNOWNFOLDERID.
EDIT: Nope, doesn't look like that is right. This thread has a discussion of FOLDERID_Games and notes that it is a virtual directory. This knowledgebase article discusses the Windows Vista Games Explorer. And this article has some more Vista specific information.
Sorry - this has turned into a non-answer but maybe the links will help you find the answer.
The recommended directory is still Program Files, as everyone has said. However, if you want a per-user install, you could install it in the AppData folder. I know Google Chrome does this to allow installation without being an administrator, and also for user-specific installation.

Resources