我想提供几种不同的安装类型,对我的安装程序执行不同的操作:如果选择“ApplicationServer”类型,则只执行部分代码。如果选择了客户端类型,则只执行此部分过程。
我试图在名为
的函数中包含2个“代码块”[Types]
Name: "application"; Description: "{cm:ApplicationServer}"
Name: "client"; Description: "{cm:Client}"
[CustomMessages]
ApplicationServer=Application Server:
Client=Client:
如果选择了第一个选项,我想执行由几个过程,常量,变量组成的特定代码来运行一系列SQL脚本,而如果选择第二个,我需要在代码区域中执行其他一些操作,像这样:
[Code]
function ApplicationServer(blabla)
begin:
{ <!This part only to run for ApplicationServer type!> }
{ following constants and variables for the ADO Connection + SQL script run }
const
myconstant1=blabla;
var
myvar1=blabla;
{ here all the procedure to define and manage an ADO Connection to run a sql script }
{ procedure 1 }
{ procedure 2 }
end
function Client(blabla)
begin:
{ <!This part only to run for Client type!> }
{ following constants and variables only for performing some stuffs on top of client }
const
myconstant2=blabla;
var
myvar2=blabla;
{ procedure 3 }
{ procedure 4 }
end
有没有办法根据正在运行的安装类型管理代码的特定部分?
感谢。
答案 0 :(得分:1)
使用WizardSetupType
support function。
您可能需要检入CurStepChanged
event function。
procedure ApplicationServer;
begin
{ procedure 1 }
{ procedure 2 }
end;
procedure Client;
begin
{ procedure 1 }
{ procedure 2 }
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
SetupType: string;
begin
Log(Format('CurStepChanged %d', [CurStep]));
if CurStep = ssInstall then
begin
SetupType := WizardSetupType(False);
if SetupType = 'application' then
begin
Log('Installing application server');
ApplicationServer;
end
else
if SetupType = 'client' then
begin
Log('Installing client');
Client;
end
else
begin
Log('Unexpected setup type: ' + SetupType);
end;
end;
end;
Pascal脚本不支持本地常量,只支持全局常量。
无论如何,如果你想要一个局部常量或有条件地初始化一个全局常量,你还不清楚。无论如何你不能做后者,常数是常数,它不能有不同的值。
与变量相同。 是这些局部变量还是要有条件地将值设置为全局变量?