Page 1 of 2
Errors when installating if $ALLUSERS$ = FALSE
Posted: Tue Apr 11, 2006 3:45 pm
by wolbrink
I'm performing a Web install. When installing, if the user chooses to create shortcuts only for themself ($ALLUSERS$ = FALSE), the installation fails with every file I try to install (not just shortcuts).
Here's the first (of many) errors:
---------------------------
Error reading from file: C:\\DOCUME~1\\vmuser\\APPLIC~1\\{F59EB~1\\OFFLINE\\IFERISAIM21APCODLFWNSSDRFFFTFF0\\capicom.dll. Verify that the file exists and that you can access it.
---------------------------
Abort Retry Ignore
---------------------------
Notice that it's looking for files here:
C:\\DOCUME~1\\vmuser\\APPLIC~1\\{F59EB~1
This is strange, since I can use Windows Explorer to see that all the file have extracted here:
C:\\Docume~1\\All Users\\APPLIC~1\\{F59EB~1
Is the $ALLUSERS$ variable being misused by the installation engine? Should I use a different variable in my script?
I'm running 5.2. Has this bug been fixed in 5.31?
--Troy
Posted: Tue Apr 11, 2006 4:50 pm
by MichaelNesmith
Troy - are you downloading your web media blocks before or after the ALLUSERS variable is set?
Posted: Tue Apr 11, 2006 5:21 pm
by jimo
Michael - Damn good question because so far I have been unable to reproduce this using vmware and IA 5.31
Posted: Tue Apr 11, 2006 6:06 pm
by MichaelNesmith
Its the only thing I can think of, which might cause this to happen. Web media blocks are downloaded into the setup folders when used, and this setup folder location does depend on the type of user mode. So web media blocks used in the installation should not be downloaded before user mode is captured in the UI.
Posted: Tue Apr 11, 2006 8:31 pm
by wolbrink
MichaelNesmith wrote:are you downloading your web media blocks before or after the ALLUSERS variable is set?
Neither. In my test case I'm not downloading any media blocks at all. The problem occurs when I call "Install Files" at the beginning of my installation on a prerequisite (before ALLUSERS is set). This call to Install Files is in my OFFLINE block.
--Troy
Posted: Tue Apr 11, 2006 8:36 pm
by wolbrink
MichaelNesmith wrote:and this setup folder location does depend on the type of user mode. So web media blocks used in the installation should not be downloaded before user mode is captured in the UI.
In my application I install prerequisites long before I proceed to the normal part of the UI (where ALLUSERS would be set). And generally I only use Web Media blocks for prerequisites.
This brings up a deeper question. I thought ALLUSERS was only used in my script to determine where I install shortcuts. Is the engine using ALLUSERS for something else ... something much deeper?
If so, I might just make up my own local variable called SHORTCUTSFORALL or something like that, and not treat ALLUSERS as hands off. What's the advantage to setting it at all?
--Troy
P.S. I installed IA 5.31. Same behavior.
Posted: Tue Apr 11, 2006 9:02 pm
by MichaelNesmith
OK, so that would definitely create a problem, because you are "pulling" a web media block (even if it is an offline block) before the ALLUSERS variable has been set to the final value [it is initialized to TRUE on NT and FALSE on 9X by the setup engine as documented in the help file]; and later you are changing that value (setting it to FALSE for a just-me install), which breaks the web media block that was pulled in earlier. The location where the installer caches local files depends on the value of the ALLUSERS variable.
Normally this isn't an issue, because prereq web media blocks and non-prereq web media blocks are distinct entities, and Windows Installer commands are not called at the prereq stage.
I think if you declare (or in your case, re-declare an OFFLINE block) after ALLUSERS has been set to its final value, this would solve your problem by re-pulling the web media block to its final location.
Posted: Tue Apr 11, 2006 9:55 pm
by wolbrink
MichaelNesmith wrote:I think if you declare (or in your case, re-declare an OFFLINE block) after ALLUSERS has been set to its final value, this would solve your problem by re-pulling the web media block to its final location.
That did the trick. Thanks!
--Troy
Another issue regarding ALLUSERS = FALSE
Posted: Mon Apr 17, 2006 1:28 pm
by wolbrink
I'm also finding that if I use my "Bundle-Files" plug-in before ALLUSERS is set, I get the exact same error.
Any idea why this is so?
--Troy
Posted: Mon Apr 17, 2006 1:33 pm
by jimo
There have been a couple of issues reported with the bundle files plugin, can you try using the FileBag instead and see if you have the same problem?
Posted: Mon Apr 17, 2006 1:42 pm
by wolbrink
jimo wrote:There have been a couple of issues reported with the bundle files plugin, can you try using the FileBag instead and see if you have the same problem?
I changed to "FileBag", and I still get the same problem.
--Troy
Posted: Mon Apr 17, 2006 2:18 pm
by sinan
Hi Troy!
These plug-ins use web media blocks, so they work the same way as any other command that uses web media blocks. If your user install mode changes, you need to re-initiate block download.
Posted: Mon Apr 17, 2006 5:47 pm
by wolbrink
sinan wrote:Hi Troy!
These plug-ins use web media blocks, so they work the same way as any other command that uses web media blocks. If your user install mode changes, you need to re-initiate block download.
I'm not sure I understand. I'm calling these commands within the OFFLINE web media block. This has nothing to do with the Web.
--Troy
Posted: Mon Apr 17, 2006 7:19 pm
by jimo
You must re-declare your OFFLINE block after ALLUSERS the same as did above.
Posted: Tue May 09, 2006 7:34 pm
by wolbrink
jimo wrote:You must re-declare your OFFLINE block after ALLUSERS the same as did above.
This doesn't do it. What I did for my previous problem was move the "Install File(s)" command after ALLUSERS was set.
What I've found is that anytime a media block is pulled (offline or not), it files are extracted in a folder based on ALLUSERS. Then, if ALLUSERS is later changed, the files are not found, and the resulting error occurs.
The thing is I can't move this code that "pulls the media block" to a place after ALLUSERS is set. For reasons I'd rather not go into right now (I can later if asked), I need to pull a media block in order to detect prereqs. And I must do this at the very beginning of my script.
--Troy