Whoever thought of manifest files for VS2005 should be shot. Right now my artist’s can’t run the game due to this crap. Already wasted 4 hours trying to figure this out, and am getting nowhere.
No longer can you include the necessary DLLs. Now they have dependencies embedded into the assembly, and it checks in weird system paths using the registry. Unless the person trying to run the game has these dependencies already (or Visual Studio 2005 installed) they can’t run it. I can’t actually test since I do have VS2005, so I have to grab people to help me try installing the game.
Your choices: Either (maybe??) use the HORRIBLE installer included with Visual Studio 2005, or … um I don’t know. The reason their installer is horrible is that it’s hard as hell to use, and I have to go through every single file in my game, one by one, and add it to the installer. No way am I going to do that. It also can’t find dependencies by 3rd party DLLs. It also doesn’t generate a single file for the installer, but 2 files (???). So there’s not one download but 2. Forget about it.
I tried copying a .manifest file from another program, along the DLLs. that should work I think, except that I’m using a whole bunch of libraries. Do I need to somehow find the source for those other DLLs and turn off manifest generation there too, and rebuild everything? I’m not sure that’s even possible, and if it were it would take me days to hunt down the source. Anyway, it doesn’t work.
I tried having my testers install the VS redistributable runtime but it also didn’t work.
I’m sort of running out of options here aside from installing VC6, getting things to build there, and using that instead.
Goddamn it. I just want to get this freaking game done and it’s always something to waste my time.
* EDIT *
I finally figured it out. I didn’t know there was a VS2005 redistributable for versions both with and without SP1. I didn’t see the SP1 version on my prior google search, and had my artists install the one without. I had one user install it with the SP1 version and it worked.
I’m also going to distribute the .manifest and dlls alongside the application. This was actually one of the first things I tried, and it didn’t work, so I think it’s more for versions of Windows that don’t have side by side assemblies at all. I saw that FMOD designer and most other installed applications did this, so in all probability it will work.
8 replies on “Manifest hell”
Can’t you just link statically with the runtime?
i once had the same problem with manifest files and that the redist setup doesnt work and therefor my program only ran on my pc. after trying everythink i simple used an other computer to compile it with vc8 and using the created exe by this computer everyone who installted the redist could use it, never found out why and after reinstalling vc8 on the first computer everything was running again.
My opinion is, that there is somtething terrible wrong in vc8.1, dont know where and why, just use an other computer or reinstall vc8, it worked for me, dont know if you have the samo problem
Yes, I could link statically but I’m using dependencies and they all have to be static or all dynamic.
I spent 8 hours on this today and got nowhere. But I found that Microsoft has a redistributable especially for VS2005 SP1. So I told my artists to try that.
If that doesn’t work then I think I will indeed need to link statically, and hopefully find and rebuild all the dependencies.
Actually there is *only one* vcredist in your computer which is upgraded to SP1 silently, but I didn’t find this mentioned anywhere else. It can be located at “8\SDK\v2.0\Bootstrapper\Packages\vcredist_x86” – if you installed VC++ *Professional* in C drive. VC++ Express you have to retrieve it from internet.
Opss that path got truncated, it should be “C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper\Packages\vcredist_x86”
If you don’t use msi and MS merge-module for that you could just ship the MS runtime dll into the same directory as your exe AND ship the MICROSOFT.VC80.CRT.MANIFEST file to the same directory.
Yeah I noticed FMOD designer did that.
The new SP1 redistributable works.
Also, you can turn off auto embedding of the manifest in the linker(?) options then you can hand edit the .manifest to match the SxS DLLs you want. I was forced to do this before MS publicly distributed the SP1 CRT DLLs.