如何判断一个组件是否已安装。安装则跳过,没安装则继续安装!
我这里有个安装角本,要求检测“Microsoft .NET Framework2.0”这个组件的的安装情况,如果没有安装此组件,则继续安装,如果已安装此组件,则跳过安装,这个要求如何实现?
下面是角本部分:
[Setup]
AppName=2015信息技术中考单机练习
AppVerName=2015信息技术中考单机练习
DefaultDirName=C:\信息技术考试单机版
DefaultGroupName=2015信息技术中考单机练习
OutputDir=e:\2015编译文件
OutputBaseFilename=2015信息技术中考单机练习
LicenseFile=README.TXT
InfoBeforeFile=D:\信息技术考试单机版\README.TXT
SetupIconFile=D:\信息技术考试单机版\djtb.ico
Compression=lzma
SolidCompression=yes
[Messages]
BeveledLabel=一个平凡的人设计封装。
[Tasks]
;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: D:\信息技术考试单机版\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: {group}\运行“2015信息技术中考单机练习”; Filename: {app}\信息技术考试单机版.exe
Name: {group}\卸载“2015信息技术中考单机练习”; Filename: {uninstallexe}
Name: {commondesktop}\2015信息技术中考单机练习; Filename: {app}\信息技术考试单机版.exe
[Run]
; 安装结束时总是运行 dotnetfx.exe,不提示用户(如果已安装则跳过,如果没安装则继续安装,这里如何完成)
Filename: {app}\dotnetfx.exe
; 安装结束时运行 信息技术考试单机版.exe,提示用户,可选
Filename: {app}\信息技术考试单机版.exe; Description: 运行“2015信息技术中考单机练习”; Flags: nowait postinstall skipifsilent
Filename: {app}\使用说明.doc; Description: 请查看自述特别说明文件文件进行注册; Flags: postinstall shellexec skipifsilent
[Code]
var
chkMyLicense:TCheckBox;
txtMyAcceptLicense: TNewStaticText;
procedure Cus_Next(Sender:TObject);
begin
if chkMyLicense.Checked then
WizardForm.LicenseAcceptedRadio.Checked :=True
else
WizardForm.LicenseNotAcceptedRadio.Checked :=True
end;
procedure InitializeWizard();
begin
WizardForm.LicenseMemo.Height:=155;
WizardForm.LicenseAcceptedRadio.visible:= False;
WizardForm.LicenseNotAcceptedRadio.visible:= False;
chkMyLicense :=TCheckBox.Create(WizardForm);
chkMyLicense.Parent :=WizardForm.LicensePage;
chkMyLicense.Left :=WizardForm.LicenseMemo.Left;
chkMyLicense.Top :=WizardForm.LicenseMemo.Top + WizardForm.LicenseMemo.Height + 14;
chkMyLicense.Width:=WizardForm.LicenseMemo.Width;
chkMyLicense.Height:= ScaleY(17);
chkMyLicense.Caption :='我同意“许可协议”中的条款(&A)';
chkMyLicense.TabOrder := 0;
chkMyLicense.OnClick:= @Cus_Next;
chkMyLicense.Checked:= true;
end;
[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usPostUninstall then
begin
DelTree(ExpandConstant('C:\信息技术考试单机版\error'), False, True, True);
DelTree(ExpandConstant('C:\信息技术考试单机版\data'), False, True, True);
DelTree(ExpandConstant('C:\信息技术考试单机版\建立磁盘映射.bat'), False, True, True);
DelTree(ExpandConstant('C:\信息技术考试单机版'), False, True, True);
end;
end;