2010-11-14 97 views
3

是否有某种方法可以通过代码来设置DefaultDirName,取决于用户对installtion的某些决定?Inno设置和DefaultDirName

让我评论: 我有一些代码是建立两个不同的系统(使用不同的interops/ocx的和这样的东西)。我的输入文件存储在两个目录输入\ A和输入\ B。 我希望两个系统只有一个设置文件。

在安装文件中,我使用CreateInputOptionPage和2个选项来确定要安装哪些文件(在每个文件上使用Check)。这工作正常。

但我也有一些ShellExec完成设置,目前使用{app}来例如注册一些.Net类和ShellExec以取消注册InitializeUninstall上的.Net类(也使用{app})

安装程序必须在两个不同位置安装软件(取决于用户的选择(例如,c:\因此,在将文件复制到系统之前,有一些指定DefaultDirName的方法,因此我可以在安装和卸载时使用相同的ShellExec?我可以当然在installtation上为两个系统添加相同的ShellExec并使用if来检查要注册哪些文件(取决于用户选择),但在卸载时我不会有这些信息(用户选择),所以我不能注销.Net类。

谢谢

回答

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; 

干杯 克里斯

+0

'GetAppSuffix('')'的原因是什么? – 2014-06-03 13:07:08

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; 
+0

您好,我尝试使用{代码:。}为DefaultDirName,但安装程序存在错误。可能是因为需要在设置开始之前设置该值,并且只有在显示第一个对话框后才显示单选按钮的值... – 2010-11-15 06:38:47

+1

我以“手动”方式执行了...指定{pf} \ dir为DefaultDirName(所以我的卸载程序被安装在那里),并在Files部分使用Desc:{code:...}和Check()完成所有的工作。似乎工作到目前为止 – 2010-11-15 06:40:34

+0

是的,'帕拉姆'不能是一个全球性的。 [安装部分帮助](http://www.jrsoftware.org/ishelp/index.php?topic=setupsection)不讨论[部分中的参数]的使用(http://www.jrsoftware.org/ ishelp/index.php?topic = params),但可能会传递任何[通用参数](http://www.jrsoftware.org/ishelp/index.php?topic=commonparams)。 FWIW尚未为安装部分使用[检查功能](http://www.jrsoftware.org/ishelp/index.php?topic=scriptcheck)或[安装之前/之后](http:// www .jrsoftware.org/ishelp/index.php?topic = scriptinstall)参数。 – 2018-01-21 06:31:16