是否有某种方法可以根据用户在安装时所做的某些决定来按代码设置DefaultDirName?
让我评论一下: 我有一些代码是为两个不同的系统构建的(使用不同的interops / ocx和这样的东西)。我的输入文件存储在两个目录input \ A和input \ B中。 我想两个系统只有一个设置文件。
在设置文件中,我使用带有2个选项的CreateInputOptionPage来确定要安装的文件(使用每个文件的检查)。这没关系。
但是我在设置完成时也有一些ShellExec,目前使用{app}来完成注册一些.Net类和ShellExec来取消注册InitializeUninstall上的.Net类(也使用{app})
设置必须在两个不同的位置安装软件(取决于用户的选择(例如c:\ software_a或c:\ software_b)。无法更改。
在将文件复制到系统之前,有没有办法指定DefaultDirName,所以我可以在安装和卸载时使用相同的ShellExec?我当然可以在安装时为两个系统添加相同的ShellExec,并使用if来检查要注册的文件(取决于用户选择)但是在卸载时我不会有这些信息(用户选择),所以我无法取消注册.Net课程。
感谢
答案 0 :(得分:3)
在CreateInputOptionPage代码部分中,您可以设置一个值,然后在下面的代码段中使用该值。我没有测试过,但可能会有效。
[Setup]
DefaultDirName={code:getpath}
[Code]
function GetPath( Default: string ): string;
begin
if (CreateInputOptionPageValue1) then
Result := ExpandConstant({sd}) + '\path1';
else
Result := ExpandConstant({sd}) + '\path2';
end;
答案 1 :(得分:1)
如果你需要在初始化DefaultDirName之后更改安装文件夹,这对我来说非常有用:
procedure CurPageChanged(CurPageID: Integer);
begin
{ updates the install path depending on the install type or the entered suffix }
if CurPageID = wpSelectDir then begin
WizardForm.DirEdit.Text := ExpandConstant('{pf}') + '\MyAppName' + GetAppSuffix('');
end;
end;
干杯 克里斯