Hello,
I have coding a runtime for Microsoft JET 4.0 SP 8. This runtime checks the version of msjet40.dll and install the Original-Microsoft-Patch for SP8.
How can I prevent the deinstallation of the runtime by uninstalling the main-app?
Karsten Baumann
Runtime Uninstall
-
- Posts: 3452
- Joined: Thu Dec 22, 2005 7:17 pm
- Contact:
Depends on how your runtime installation itself works. If its a merge module, it will probably uninstall itself, if it determines that no other applications are using it. If you are running an EXE file to install this runtime, simply do nothing - it will not be uninstalled. The pre-built runtimes do not uninstall themselves and are available for manual uninstall from the Control Panel.
Michael Nesmith
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
My problem is now thats popup a "browse for folder" to locate my original setup-file?!
I create a runtime-text-file (*.rtm) in the runtime folder of InstallAware. Two scripts I'm also create. The checkjet-script search the msjet40.dll in the system-folder und compare the fileversion.
The setupjet-script install the original-microsoft-patch with Run Programm. When I uninstall the dedault-project, the setup want to install the jet-engine and then popup the folderbrowser-dialog.
Please check my code. Why the runtime-installer not work???
checkjet:
setupjet:
I create a runtime-text-file (*.rtm) in the runtime folder of InstallAware. Two scripts I'm also create. The checkjet-script search the msjet40.dll in the system-folder und compare the fileversion.
The setupjet-script install the original-microsoft-patch with Run Programm. When I uninstall the dedault-project, the setup want to install the jet-engine and then popup the folderbrowser-dialog.
Please check my code. Why the runtime-installer not work???
checkjet:
Code: Select all
Set Variable JET to
Comment: Prüft Vorhandensein der Msjet40.dll
Get Common Folder Location System->System Directory into WINSYSDIR
Does File Exist $WINSYSDIR$\\msjet40.dll (get result into variable JET)
if Variable JET Equals TRUE
Comment: Prüft Dateiversion SP8 4.0.8015.0
Check File Version $WINSYSDIR$\\Msjet40.dll into Variable JET
end
if Variable JET Equals FALSE
Set Variable PREREQ to TRUE
Set Variable PRELIST to $PRELIST$$NEWLINE$Microsoft Jet 4.0 SP 8
end
setupjet:
Code: Select all
if Variable JET Equals FALSE
Set Variable PROGRESSTEXT to Installiere Microsoft Jet 4.0 SP 8
Set Variable JetFILES to
Define File Bag : #IADIR#\\runtimes\\jetbin\\*.*, get runtime location of files into variable JetFILES
Comment: Betriebsystem auswählen
Set Variable PROGRESSMODE to MARQUEE
Get System Setting Windows XP into OSTMP
if Variable OSTMP Equals TRUE
Run Program $JetFILES$\\jet40sp8_wxp.exe /passive (WAIT)
end
Get System Setting Windows 2003 into OSTMP
if Variable OSTMP Equals TRUE
Run Program $JetFILES$\\jet40sp8_w2003.exe /passive (WAIT)
end
Set Variable PROGRESSMODE to
if Variable Jet Equals REBOOT
MessageBox: $TITLE$ Setup, Reboot....
if Variable REBOOTNOW Equals OK
Reboot Computer and Resume Setup
else
Terminate Installation
end
else
if Variable JET Equals ERROR
MessageBox: $TITLE$ Setup, Dont install....
Terminate Installation
end
end
end
Last edited by KaBa on Tue Oct 10, 2006 10:04 am, edited 1 time in total.
-
- Posts: 3452
- Joined: Thu Dec 22, 2005 7:17 pm
- Contact:
Nice job with the script! Just a couple oversights which should take care of the disk prompt here when fixed;
1. Wrap the entire setup script inside an If statement, checking if JET is FALSE. Otherwise your setup script for Jet always runs, even if Jet already exists. And at best you do an unnecessary re-install; at worst, you get an unnecessary disk prompt.
2. Make sure the check script sets JET to FALSE both when Jet does not exist, or is an old version. Set it to TRUE or some other value otherwise.
I think that should take care of it! You probably already have #2 covered, just double-checking there. And with #1, you'll make sure the setup for the runtime executes only when needed.
1. Wrap the entire setup script inside an If statement, checking if JET is FALSE. Otherwise your setup script for Jet always runs, even if Jet already exists. And at best you do an unnecessary re-install; at worst, you get an unnecessary disk prompt.
2. Make sure the check script sets JET to FALSE both when Jet does not exist, or is an old version. Set it to TRUE or some other value otherwise.
I think that should take care of it! You probably already have #2 covered, just double-checking there. And with #1, you'll make sure the setup for the runtime executes only when needed.
Michael Nesmith
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
Code: Select all
if Variable JET Equals FALSE
The IF statement exists in my code. Im only forget insert it in the reply.
I think, I have found my problem. Windows XP SP2 always have install Jet 4.0 SP8 by default. To test my setup, I have change the check-version to 5.0.0.0. The installer cant find this version and the je-install starts.
But when I uninstall the setup I get an disk prompt. When I check the correct version (4.0.8015.0) the installer works.

When the user manual uninstall the jet-engine, my uninstall shows a disk prompt???

-
- Posts: 3452
- Joined: Thu Dec 22, 2005 7:17 pm
- Contact:
Of course it will. What is strange about your program working as you coded it?
If you want to skip prereq checks in maintenance mode, just add another If and test for the value of the MAINTENANCE variable.

Michael Nesmith
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
Who is online
Users browsing this forum: No registered users and 249 guests