Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup Inno设置和DefaultDirName_Inno Setup - Fatal编程技术网

Inno setup Inno设置和DefaultDirName

Inno setup Inno设置和DefaultDirName,inno-setup,Inno Setup,是否有某种方法可以根据用户在安装时所做的某些判断,通过代码设置DefaultDirName 让我评论一下: 我有一些代码是为两个不同的系统构建的(使用不同的interops/ocx之类的东西)。我的输入文件存储在两个目录input\A和input\B中。 我希望两个系统都只有一个安装文件 在安装文件中,我使用带有2个选项的CreateInputOptionPage来确定要安装的文件(在每个文件上使用Check)。这很好用 但我在安装完成时也有一些ShellExec,它目前使用{app}注册一些.

是否有某种方法可以根据用户在安装时所做的某些判断,通过代码设置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类


感谢您在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(“”)