我想要更改ssInstall部分中的defaultdirname参数。我该如何做?是否有一种设置[Setup]参数的函数。
我想要更改ssInstall部分中的defaultdirname参数。我该如何做?是否有一种设置[Setup]参数的函数。
WizardForm.DirEdit.Text := 'c:\test';
你可以使用WizardDirValue函数来读取该值。
我说“只是访问”……但我花了一个小时才弄明白 ;)
似乎没有办法通过脚本更改脚本常量。
我认为最好的方法是修改[Files]部分中每个条目的目标目录,例如:
[Files]
Source: "MYPROG.EXE"; DestDir: "{code:NewTargetDir}"
您可以按照以下方式推导出新的安装目录:
[Code]
function NewTargetDir(Param: String): String;
begin
Result := ExpandConstant('{app}') + '\MySubDir';
end;
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}\MySubDir"
无需任何脚本即可完成。如果不确定,选择更简单的解决方案。
我有一个类似的情况,安装程序通过命令行接收安装路径。 我正在使用Jonx提出的解决方案:
WizardForm.DirEdit.Text := 'c:\test';
例子:
function CompareParameter(param, expected: String): Boolean;
begin
Result := False;
if Length(param) >= Length(expected) then
begin
if CompareText(Copy(param, 1, Length(expected)), expected) = 0 then
begin
Result := True;
end;
end;
end;
function GetParameter(expectedParam: String): String;
var
i : LongInt;
begin
Result := '';
for i := 0 to ParamCount() do
begin
if CompareParameter(ParamStr(i), '/' + expectedParam + '=') then
begin
Result := Copy(ParamStr(i), Length(expectedParam) + 3, Length(ParamStr(i)));
break;
end;
end;
end;
procedure InitializeWizard();
var
newInstallFolder: String;
begin
newInstallFolder := GetParameter('INSTALL_FOLDER');
if Length(newInstallFolder) > 2 then
begin
if Copy(newInstallFolder, 1, 1) = '"' then
newInstallFolder := Copy(newInstallFolder, 2, Length(newInstallFolder) - 2)
if Length(newInstallFolder) > 1 then
WizardForm.DirEdit.Text := newInstallFolder;
end;
end;
设置应用程序是从另一个设置中以静默模式启动的。这对我来说可以正常工作。