Inno setup Inno设置和DefaultDirName
是否有某种方法可以根据用户在安装时所做的某些判断,通过代码设置DefaultDirName 让我评论一下: 我有一些代码是为两个不同的系统构建的(使用不同的interops/ocx之类的东西)。我的输入文件存储在两个目录input\A和input\B中。 我希望两个系统都只有一个安装文件 在安装文件中,我使用带有2个选项的CreateInputOptionPage来确定要安装的文件(在每个文件上使用Check)。这很好用 但我在安装完成时也有一些ShellExec,它目前使用{app}注册一些.Net类,ShellExec在InitializeUninstall上注销.Net类(也使用{app}) 安装程序必须将软件安装在两个不同的位置(取决于用户的选择(例如c:\software\u a或c:\software\u b)。无法更改此设置 那么,在将文件复制到系统之前,是否有办法指定DefaultDirName,以便我可以在安装和卸载时使用相同的ShellExec?当然,我可以在安装时为两个系统添加相同的ShellExec,并使用if检查要注册的文件(取决于用户选择)但在卸载时,我将没有此信息(用户选择),因此我无法注销.Net类Inno setup Inno设置和DefaultDirName,inno-setup,Inno Setup,是否有某种方法可以根据用户在安装时所做的某些判断,通过代码设置DefaultDirName 让我评论一下: 我有一些代码是为两个不同的系统构建的(使用不同的interops/ocx之类的东西)。我的输入文件存储在两个目录input\A和input\B中。 我希望两个系统都只有一个安装文件 在安装文件中,我使用带有2个选项的CreateInputOptionPage来确定要安装的文件(在每个文件上使用Check)。这很好用 但我在安装完成时也有一些ShellExec,它目前使用{app}注册一些.
感谢您在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;
如果在初始化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;
干杯
Chris您好,我尝试将{code:.}用于DefaultDirName,但安装程序存在一个错误。可能是因为需要在安装程序开始之前设置该值,并且单选按钮中的值仅在显示第一个对话框后才出现…我是通过“手动”方式完成的…为DefaultDirName指定一个{pf}\dir(因此我的卸载程序安装在那里)并使用Desc:{code:…}和Check()完成所有工作在文件部分。似乎工作得很好是的,
Param
不能是全局的。没有讨论的使用,但可能会传递任何.FWIW没有的,因为安装部分使用了或参数。为什么GetAppSuffix(“”)
?