(Updated: 2005.04.17 10:58:45 AM)
| |

After much trial and tribulation, I found the solution to the proper installation of HTML Help using Installshield Express and VFP 7.
Following instructions from Installshield Express help, you are told to include the "Fox HTML Help Support Library merge module" in your setup file if you plan to install HTML help with your application. This module installs the Foxhhelp.exe and Foxhhelps.dll files to the Windows/system directory and enables HTML help in Foxpro 7....
....or so the instructions say. Unfortunately, the instructions are wrong. Foxpro 7 has renamed these two all-important files to Foxhhelp7.exe and Foxhhelps7.dll. They are installed properly in the development version of Visual Fox 7.
However, the merge module that is included in the Installshield Express package that comes with Fox 7, installs the older (Fox6) versions of these files. (Don't the people at Microsoft test this stuff?)
Here's one way to install Help successfully for Foxpro 7 user apps, where the user does NOT have a development version of Fox:
1) First, uncheck the Fox HTML Help Support Library merge module from your installation setup in Installshield.
2) Instead, manually add Foxhhelp7.exe and Foxhhelps7.dll to your installation through the Files and Features section. You can choose to install these files in the System directory or in your application directory. Installshield will register these components for you automatically. See the following file for more info:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfoxgen7/html/vfpdeploy.asp
The help files are very small, less than 70k total.
That's it! Fox HTML help now works as intended!
UPDATE-OPTION 2:
Installshield has now fixed this oversight with the HTML help modules. See the following link to download the proper merge module for Fox7 HTML help:
http://saturn.installshield.com/isd/mergemodules/Vfp7HTMLHelp.msm
You will also find an update to the VFP7runtime module for SP1:
http://saturn.installshield.com/isd/mergemodules/Vfp7Runtime.msm
Submitted by:
Kent Lester
Helpful info gleaned from the
InstallShield support forums on uninstalling/reinstalling applications:
Q: You want to remove your application that you installed previously and are prompted for the location of your .MSI file. Like the efficient developer you are, you selected the
SingleImage option and installed your app via a single Setup.EXE. Unfortunatly, you cannot find the .MSI file on the target system and there doesn't seem to be a way to extract it from your Setup.EXE.
A: "
HKEY_CURRENT_USER\Software\Microsoft\Installer\Products. Find the key for your product (check the
ProductName values of the keys). Delete the key corresponding to your product and Windows Installer will let you reinstall." After that, you should be able to run the uninstall process from "
Add/Remove Programs". "The main reason this happens is from using a Compressed Single Exe. During the install the msi is copied to a temp location (on Win2k, it's copied to a temp directory under the users' profile (Documents and Settings)), installed from there, and then deleted with the Temp folder cleanup. This issue is fixed in 3.5x though because now you have the ability to cache the msi to location of your choice."
Being that
InstallShield considers this an "Issue" that needed to be "Fixed", I'd like to see the VFP team issue an update to our version of
InstallShield Express (ISX) that supports specifying the location of these temp files so we don't have customers screaming that they cannot uninstall our app. Ideally, it would be nice if the Setup.EXE contained the uninstall routine itself.
BTW - Here's the link to IS's support forum on ISX
http://community.installshield.com/forumdisplay.php?s=&forumid=25
William Fields

Actually, this becomes REALLY a pain because ISE
requires that any previous versions be uninstalled before a new version can install on top. - ?wgcs
I ran into a problem with the VFP v7
InstallShield Express "Limited Edition" (ISX_LE), which ships with the VFP v7 CD, that I finally "solved" by upgrading to
InstallShield Express. I came across some interesting issues along the way that may be of help to anyone else upgrading to
InstallShield Express (which I still feel was a good move for me). First, why did I upgrade? I found that even after carefully following instructions from several sources and multiple setup settings in ISX_LE I could install my VFP app on a Client PC, but could not uninstall it through ISX_LE or Control Panel
Add/Remove Software. I could not (re)install the app either, until I uninstalled it first. I ended up going into System Registry to do that, which I do not want End Users to do
.
I then upgraded to ISX v3.5.3, which is normally $350, but for VFP developers it is now available for a discounted price of $250 [(800) 809-5659, Nancy]. I installed ISX and it saw I had an existing project and "converted" it for me. The converted project had the same problem. I opened a new ISX project, built it out with the same settings I used previously, and it worked perfectly for Install/Uninstall on both machines I had used ISX_LE on previously.
I then tried to install the VFP app on a client machine running Win2000 Pro. I got an error advising I needed MSVCR70.dll, which I "know" had been included in the Object/Merge settings. Long story short, the ISX upgrade did not include the MSVCR70.msm or VFPRunTime.msm Merge Files (ISX_LE does). Both are required to properly distribute and run an app. My first 2 test machines did not have this problem, likely because ISX_LE did include the needed files and they were already on those PCs when I later installed using ISX. I found the needed .msm files on my development PC, likely from the ISX_LE app being there at one time, and added them to the ISX Merge Module Gallery (steps provided below). If you do not have those .msm files you will need to dig them up. I never did find them on the Microsoft site, but they may be buried somewhere deep on their servers. I also placed them on my ftp Server (gilhale.d2g.com or 24.95.219.229) under the VFP7_ISX directory.
I hope this is of help to anyone else struggling with ISX! Many thanks to Ed Leafe (Consultant Extraordinaire) and John Koziol (Microsoft) for their help.
Gil Hale
gil@gilhale.com
Managing the Merge Module Gallery
To add merge modules to the Merge Module Gallery:
Acquire new or updated merge modules.
Using Windows Explorer, copy the new module(s) to a Merge Modules folder. Typically, this folder can be found at Folder>\Modules\i386, but it can vary. The folders scanned for merge modules can be set from the File Locations tab of the Options dialog, available from the Tools menu in InstallShield Express.
Close InstallShield Express if if is currently open.
Launch InstallShield Express. The modifications made are reflected in the Merge Modules view.
VFP7 comes with Install Shield Express to allow you to create setup programs for your applications. Install Shield Express seems to be much more complete and robust than the previous Setup Wizard that came with VFP6.
Note: Install Shield Express comes in the VFP 7.0 CD but as a separate program (IOW, must be installed separately)
Yet, ...Install Shield Express does not know anything about VFP7. When you create a setup program with Install Shield Express you have to manually include VFP7 runtime libraries, otherwise your application will not work on a computer without VFP7.
The fact that nobody gets this right the first couple times (myself included, 3 builds and I got it!) says something about how well this was thought out. -- Mike Helland
Hi Mike, FYI - the MSVCRT.DLL lives in the "Microsoft (R) C Runtime Library" merge module. The actual merge module file is MSVCRT.MSM. I found this out by accident. When I went to manually include MSVCRT.DLL, ISX gave me a message saying "MSVCRT.DLL is contained in Microsoft (R) C Runtime Library merge module, would you like to add that merge module?". I thought that this was better than nothing. BTW - I looked at your .ism file and am not sure what you're wanting me to do. Is it a project that starts with just the minimum VFP7 runtime files? - WF
Yeah, the point of that is, its ready to go with all the VFP stuff, and you should just need to add application specific files without worrying about the runtime or HTML Help stuff. -- Mike Helland
Below is a minimal list of the "object/merge modules" that you need to include in a setup program for a Hello World application:
- MS VC++7 Runtime Library (Only needed the first of three listed, the filename is msvcr70.msm)
Where is msvcr70.msm? I am getting "msvcr70.dll not found" when I try to run an installed app. Fixed: I included "_VC System CRT" and now no more "msvcr70.dll not found." - ?CFK
Wierd, I didn't have msvcr70.msm showing up in my installshield merge module tab. To fix this I had to copy c:\program files\common files\microsoft sahred\merge modules\msvcr70.msm d:\program files\installshield\installshield express\modules\i386\ -- George Scapin
- MS VFP7 Runtime Libraries
- MS VFP HTML Help Support Library (if you deploy help files with your app)
The .msm for VFP HTML Help is incorrect. You must include the help support library files manually or create your own .msm for VFP7.
The files that you must include are :
FOXHHELP7.EXE
FOXHHELPPS7.DLL
If you include them in your setup, you can install them in [INSTALLDIR] or [CommonFilesFolder]\Microsoft Shared\VFP, and they will self-register. If you copy them manually, you must register them by running :
FOXHHELP7 /regserver
I add the files to my setup under [CommonFilesFolder]\Microsoft Shared\VFP\, but I'm wondering what happens on an international install. I think those directories may have different names. Anybody know what Microsoft Shared is say in the German version of Windows? -- Rick Strahl
In German, that's a "Gemeinsame Dateien" folder. That's why you shouldn't hardcode the foldernames, but use the placeholders [CommonFilesFolder] or [ProgramFolder] (which is "Programme" in Germany, not "Program Files") That way the Installer takes care of fiddling with those changing names. -- ?wOOdy
I put these files in [System Folder]. Worked on Win98 and Win95. I wonder where they're SUPPOSED to go. [System Folder] is where the files went for VFP6 install. I believe this is where the older help dll and exe get installed when you check the VFPHtmlHelp.msm during your install setup. -- George Scapin
Is there some command which can be run to process the *.msm files in such a way that they will correctly install and register themselves. This would solve a shortcoming of Inno Setup.
Michael Chean
Microsoft Link: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfoxgen7/html/vfpdeploy.asp?frame=true
Has any one else noticed that after installing your application you also get the default folder Your Company Name in Program Files? Adrian Heath
I used to until I filled out the property that asks for our company name. The folder with our company name is created and the setup information file is put into this folder when the install occurs. George Scapin
INSTALLDIR entry is [ProgramFileDir]\Kuehne Nagel\KN App, Publisher entry is Kuehne Nagel and InstallShield routine puts files into the K&N directory but also creates empty program Files\Your Company Name\Default directory. I am only using a single feature of 'Always install' and single setup of '&Typical'. Adrian Heath
IS Files\Your Company Name\Default directory empty? If not, what file is in there? George Scapin
Yes, the default directory is empty Adrian Heath
I'm getting the empty c:\program files\Your Company Name\Default\ as well. How do you prevent this from being created? - William Fields
Has anyone had the problem, that if you install your app on Windows 2000 as one user, the runtime files don't get registered for users elsewhere on the system, so you either have to register them manually, or have the user reinstall the runtime? I think this needs to be fixed rather quickly. -- Mike Helland
Mike, this is documented in ISX KB Q105063 
[ The default link for 'Q' articles referenced here on the Wiki is the Microsoft KB. For this article you'll want the InstallShield KB instead, which can be found at http://support.installshield.com/kb/. The direct link for this article is http://support.installshield.com/kb/view.asp?pcode=ALL&articleid=Q105063. Rick Borup ]
You should use
Setup.exe /V"ALLUSERS=2"
or
MsiExec.exe /I project.msi ALLUSERS=2
Andrus Moor
Workaround: Including the "Customer Information" dialog in step 4 of the ISX project setup. See Q311308
PRB: All Users Do Not Have Access to Installed Application for more information.
Q: How do i combine /qb+ with ALLUSERS=2?
A: setup /v"ALLUSERS=2 /qb+"
Q: How do I get ISX to register an OCX? -- ?CFK
A: After adding the file(s) via the Files and Features section, select the file in the target machine tree, right click, properties, Advanced, Registration, set to "Auto". Howeveer, before you do this, check to make sure your OCX does not already within the "Objects and Merge Modules" section. If it does, all you need to do there is put a check mark to install and register it on the target.
See also: http://www.installsite.org/pages/en/msi/tips.htm
Q: Can anyone give me a good way to determine what files are specified in merge (.msm) modules? I have a MSVCRT.DLL requirement, but I don't know which merge module will give it to me. I've downloaded and installed the Orca utility, but it wasn't very enlightening. - William Fields
In the "File" table there is a "FileName" field that looks like it lists the files included with the merge module. There can be multiple files specified, and it's kind of cryptic, but that's where to look. - WF
A. Orca Editor
For a free alternative see Inno Setup.
Ed Rauh kindly pointed out to me that Inno Setup is not a Windows Installer based installer, and thus not the equivalent of Install Shield
Michael Chean
How to Run a Post Setup Executable with Limited Edition for VFP 7
First of all, see Q316907 in the Knowledge Base. Here are a couple of modifications to the process that might make things easier:
1) In lieu of steps 2-4 in the Orca section, simply set Show Launch Program back to No inside InstallShield. The specified Program File and Command Line Parameters will remain in the MSI file.
2) If you prefer the executable to start after the user presses Finish, use steps 5&6 as shown. If you want the executable to start before the user presses Finish:
- In the Tables column, locate InstallUISequence.
- Add a row.
- Specify LaunchProgramFileFromSetupCompleteSuccess as the Action. (make sure there are no trailing spaces)
- Specify a Sequence number that follows ExecuteAction. I used 851.
Joel Leach
You can download a bunch of different merge modules from
http://www.installshield.com/downloads/isx/mm/modules.asp
They even have one to install MSDE for you.
Don Tanner
Also, when someone is unhappy with InstallShield at all (which should be easy) they can get a CrossUpdate to the much better WISE Windows Installer. Check out http://www.wise.com or Andy.Vernier@wise.com for details. -- ?wOOdy
Also see: Q320152 
and http://support.installshield.com/kb/view.asp?pcode=ALL&articleid=Q107993 "HOWTO: Always Overwrite Files Regardless of Version, Date, and Time Stamp" (applies to InstallShield Express 3.x, 4.x Last Revised On: 2/25/2003)
See Also Orca Editor
Contributors: Hector Correa, Mike Helland, George Scapin, Adrian Heath, Andrus Moor, Alex Feldstein, Joel Leach, Don Tanner
Category VFP Installations Category VFP Tips And Tricks Category Installers
Category Needs Refactoring -- Lots of good info, but a bit of a mess!