前两天Installshield11制作的安装包,需要升级到Installshield14(2008)上,下面是收集的FAQ
1.Installshield14(2008)中,在Win2012上,SYSINFO.nOSMajor,SYSINFO.nOSMinor取得不对。
判断目标OS版本可以利用注册表
NUMBER nOS,nvResult;
STRING svOS;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBGetKeyValueEx("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "CurrentVersion",nOS,svOS,nvResult);
if(svOS = 6.0) then
//Win2008
endif;
if(svOS = 6.2) then
//Win2012
endif;
2.Executesequence中InstallValidate
如果不需要对文件的check,可以无效掉这个action就可以了。(Conditions : FALSE)
InstallValidate之后使用条件REMOVE="ALL"的自定义action都会失效。
我们可以换另外一种等效的条件_IsMaintenance="Remove",但它必须在UserInterface sequence中使用。
PS:
· First-timeinstallation: Not Installed
· Anymaintenance type: Installed
· Uninstallation:REMOVE="ALL" (after InstallValidate)
3.installshield2008 安静卸载
STRING szProgram,szCommandLine;
szProgram = SystemFolder ^ "msiexec.exe";
szCommandLine = "/X {Product Code} /quiet";
LaunchAppAndWait(szProgram,szCommandLine, WAIT);
InstallSite Software and Support for Setup Developers