We've been tearing our hair out over this one. Because we are a VFP9 shop, I hope that this is the appropriate forum for posting this one, even though the problem is only with clients running Vista.
Our distributed multi-user package has an Auto-Update feature that allows downloading and/or installing of updates from our website. These 2 features are based on the client's current version being compared to a version-control sequence.dbf that ensures that updates are installed sequentially. Our system has used this process for several years now. But, we have a major problem running this specific function on Vista.
The actual self-extracting EXE (created using Package For The Web) is downloaded into a /ServicePacks subdirectory, along with some control files. When selected within our menu system for installation, (after a series of validations and tests that all users are locked out), the program executed these 2 commands sequentially:
&UpdFileName
QuitProg()
Public variable UpdFileName is the RUN command including the full path to the self-extracting EXE in the \Servicepacks subdirectory, such as:
"RUN /N servicepacks\SP_A20070301.EXE"
QuitProg() immediately does a clean exit from our system.
The self-extracting EXE would launch, perform the proper expansion/replacement, then exit to launch the replacement "... update completed for version xxxxx..." program. This always works under pre-Vista systems.
Under Vista, all goes well except the SP_A20070301.EXE doesn't launch.
I replaced the RUN command with code using WinExec() ... also tested using CreateProcess(). Same results.
If I manually enter the WinExec code from the VFP commandline, or run the code manually in a .PRG, Vista will open the "...unknown publisher..." window, with the option of running or cancelling. If RUN is selected, everything goes properly to completion. If I take this .PRG and compile it into a VFP EXE, and run the EXE from the VFP commandline, I get the same behaviour ... I get the option to run or cancel. However, if I run this EXE from MyComputer or Explorer in Vista, nothing gets run ... I do not get the Vista "...unknown publisher..." window.
I have tested with WAIT windows showing WinExec's returncodes. I expect a 33 showing successful launching as in WinXP and others. I get the 33 when run from inside VFP, but only after I respond positively to the Run Anyway option. When the EXE is run from MyComputer, the returncode is 0 (not really a valid returncode for WinExec).
What am I missing here? I thought maybe some DLL available inside VFP that WinExec or CreateProcess uses that is not included in our runtime modules, but we have other uses of these functions that work.
Is it related to the EXE from Package for the Web? I played around with compatibility settings with no success.
Anybody have any idea?
Our distributed multi-user package has an Auto-Update feature that allows downloading and/or installing of updates from our website. These 2 features are based on the client's current version being compared to a version-control sequence.dbf that ensures that updates are installed sequentially. Our system has used this process for several years now. But, we have a major problem running this specific function on Vista.
The actual self-extracting EXE (created using Package For The Web) is downloaded into a /ServicePacks subdirectory, along with some control files. When selected within our menu system for installation, (after a series of validations and tests that all users are locked out), the program executed these 2 commands sequentially:
&UpdFileName
QuitProg()
Public variable UpdFileName is the RUN command including the full path to the self-extracting EXE in the \Servicepacks subdirectory, such as:
"RUN /N servicepacks\SP_A20070301.EXE"
QuitProg() immediately does a clean exit from our system.
The self-extracting EXE would launch, perform the proper expansion/replacement, then exit to launch the replacement "... update completed for version xxxxx..." program. This always works under pre-Vista systems.
Under Vista, all goes well except the SP_A20070301.EXE doesn't launch.
I replaced the RUN command with code using WinExec() ... also tested using CreateProcess(). Same results.
If I manually enter the WinExec code from the VFP commandline, or run the code manually in a .PRG, Vista will open the "...unknown publisher..." window, with the option of running or cancelling. If RUN is selected, everything goes properly to completion. If I take this .PRG and compile it into a VFP EXE, and run the EXE from the VFP commandline, I get the same behaviour ... I get the option to run or cancel. However, if I run this EXE from MyComputer or Explorer in Vista, nothing gets run ... I do not get the Vista "...unknown publisher..." window.
I have tested with WAIT windows showing WinExec's returncodes. I expect a 33 showing successful launching as in WinXP and others. I get the 33 when run from inside VFP, but only after I respond positively to the Run Anyway option. When the EXE is run from MyComputer, the returncode is 0 (not really a valid returncode for WinExec).
What am I missing here? I thought maybe some DLL available inside VFP that WinExec or CreateProcess uses that is not included in our runtime modules, but we have other uses of these functions that work.
Is it related to the EXE from Package for the Web? I played around with compatibility settings with no success.
Anybody have any idea?