Utterly unable to deploy

hi folks,
i have a simple GUI that i cannot for the life of me deploy on windows XP pro machines. this might not be a root issue per se, but i don’t know.

root 5.12.00. MS Visual Studio 2005 Standard. both dev and target machines are XP Pro - validated and with all updates. root was compiled on my machine using instructions from this forum, which worked fine, and root.exe works fine. no MSVCxx71.DLL dependencies anywhere… the app is built in Release mode on the dev machine.

i’ve tried /MT vs. /MD, FAT32 workaround on/off, embed manifest or not, applocal vs MSMs vs. vcredist.exe vs. the MSDN tutorial (drag CRT folder from C:\Program Folders\Microsoft Visual Studio…\VC\redist\ into setup and deployment project)…
every time, the app installs. clicking on it brings up the hourglass pointer for 1-2 sec, then nothing happens. the prompt just turns back into an arrow again.

i run the app through dependency walker on both the dev and target machines, and all libraries are located (except for DWMAPI.DLL but i think it’s o.k. to ignore that)… profiling the app shows some red lines in the output window, but these complaints are pretty much the same on both the dev and target machines. i don’t see anything obvious there.

i was able to deploy a simple Hello World Win32 Console app (took ~5minutes to go from New Project on the dev computer to clicking on the .msi file on the target computer!) but nothing i’ve tried has allowed me to deploy a Win32 app that requires root libs. i feel like i’ve read & tried every tutorial and blog on the web about deployment and i’m still stuck.
i’ve seen a post or two in these forums about deploying - and the comments there made sense to me (and didn’t help in my case)…

has anyone here deployed a standalone root gui app to a “clean” XP pro machine??? (i.e. no visual studio or redist libraries installed, and no .NET)
and/or do you know of any root-specific webpage on this?

not sure if it’ll help, but i put zipfiles of the test GUI and my hello world test areas here: wjllope.rice.edu/RootAppDeployProblem/

any ideas, wild guesses, or page slaps would be greatly appreciated!!!
cheers,
bill

Hi Bill,
won’t work - that’s why you didn’t see any explanation of how to do it. ROOT is more and needs more than just its dlls. So don’t package ROOT’s dlls, but require that users install ROOT’s msi before installing your msi.
Cheers, Axel.

[quote=“Axel”]Hi Bill,
won’t work - that’s why you didn’t see any explanation of how to do it. ROOT is more and needs more than just its dlls. So don’t package ROOT’s dlls, but require that users install ROOT’s msi before installing your msi.
Cheers, Axel.[/quote]

hi axel - that’s terrible news… i had gotten the impression from the thread root.cern.ch/phpBB2/viewtopic.ph … ght=deploy that it was possible to deploy a simple root app.
i was very much trying to avoid installing all of root as the GUI is for an outreach project where local high school students will get to see and work with real data from RHIC. i wanted the minimum possible footprint on the high school’s computers to keep things as simple and clean as possible.

but if i package root’s MSI as you suggest, then it still won’t work - right? i use VC 8.0 and AFAIK the root MSI’s are made w/ VC 7.1. so to avoid DLL Hell i’ll still have to compile root on every target computer anyway. thus - it looks like root is not the right framework for me to base this GUI on… how depressing - my root code did everythign just like i wanted and beautifully and fast on the dev machine… rats…

thanks very much for the comments… saved me from wasting any more time on this! cheers, bill

Hi Bill,

That might work for a simple ROOT app. But anything involving TApplicationa nd GUI is far from simple. There’s e.g. signal/slot, which involves CINT, and for that ROOT needs some additional files.

That’s a pretty common problem. But downloading and installing all of ROOT is pretty fast - usually it doesn’t matter whether you install 3MB or 100MB. What you could do, though, is extracting the minimal version of ROOT that’s needed to run it, and packaging that with your msi. A few hints: you’ll need a bit from cint (at least include and stl), and from etc (at least system.rootmap), and a few more libs (at least lib/lib*Dict.dll). And you need to set the env var ROOTSYS from within your MSI. Well, at least ROOTSYS must be defined when running your binary. And it should point to the dir containing cint/include etc in your deployment.

Again: this is not the recommended path. You should really just take the ROOT.msi and install it everywhere. It’s a lot simpler.

You could just build ROOT on your VC8 machine, run make distmsi, and deploy that ROOT.msi.

Yes, and it would even allow you to sneak in a few RHIC’s algorithms or classes that depend on ROOT. I wouldn’t give up yet, only one hour after the first forum answer :wink:

Cheers, Axel.

hi again Axel - i understood only about half of that. are you suggesting that i set up a directory tree that includes just those crucial things, then add that dir tree to the installer setup? i.e. the MSI would install my app, the root DLLs in the app directory, and this directory tree somewhere else, and set up the target machine’s envvars to point to the top of this tree?

all this might be well over my head - i didn’t even know include files were used post-compilation! thanks again for the comments - certainly saved me from any more flailing around like a fish in a gill net trying to deploy DLLs… cheers, bill

Hi Bill,

Yes, this might be an option. But installing a full ROOT.msi is a lot simpler and safer.

Cheers, Axel.

[quote=“Axel”]Hi Bill,

Yes, this might be an option. But installing a full ROOT.msi is a lot simpler and safer.

Cheers, Axel.[/quote]

o.k… i’ll try that first. if that works - i’ll think about whether it’s worth the effort to slim it down and package the key things directly into my installer. i’ll reply here if i make any progress… thanks again for all the excellent comments - greatly appreciated… cheers

so. just for fun i dragged some folders from my local root build (dev machine) into the Application folder in the deployment project in visual studio. these were C:\cygwin\root\bin, …\include, …\etc, and …\lib… built msi file is 40MB (was 8MB). copied to virgin target machine & installed, which put everything in the default folder C:\Program Files\AAA\testnocon_Deploy.
just as a test i set ROOTSYS and added to PATH by hand, and ROOTSYS points to the installer’s default folder.

um…

[color=red]the app runs on the clean target machine![/color]

i know this is not the best long-term deployment solution - but i can’t tell you how happy & relieved i am to get something going at least. should be easy to clean things up from here… many thanks again for the hints… cheers (and tonight i’ll mean that literally!)
bill