1 [Setup]
 2 AppName=MyProgram
 3 AppVersion=1.0
 4 DefaultDirName={code:GetDefaultInstallRoot}\MyProgram
 5  
 6 [code]
 7 function GetDefaultInstallRoot(Param: String): String;
 8 begin
 9     if ((GetWindowsVersion shr 16) >= $0600) then
10         Result := ExpandConstant('{userappdata}')
11     else  
12         Result := ExpandConstant('{pf}');
13 end;

以上是对于 NT6 也就是 Vista 开始的系统。你可以根据要求改一下,比如 > $0601 就是 Windows 8。

 

inno setup [setup]段参数说明
[Setup]: DefaultDirName 
说明: 
这是个必需的关键字,该值是默认的目录名称,用于“选择目录页”向导。通常它有一个目录常量前缀。 
如果 UsePreviousAppDir 是 yes (默认值)并且安装程序发现已经安装了一个相同应用程序的早期版本,它将用先前选择的目录代替默认的目录名称。 

示例: 

如果你使用: 
DefaultDirName={sd}\MYPROG 
在 Setup 中,典型地应有如下显示: 
C:\MYPROG 

如果你使用: 
DefaultDirName={pf}\My Program 
在 Setup 中,典型地应有如下显示: 
C:\Program Files\My Program 

[Setup]: DisableDirPage 
有效值: yes 或 no 
默认值: no 

说明: 
如果该项设置为 yes, 安装程序将不会显示“选择目标文件夹”向导页。在这种情况下,它将始终使用默认的目录名。

[Setup]: DisableFinishedPage 
有效值: yes 或 no 
默认值: no 

说明: 
如果该项设置为 yes, 安装程序将不会显示“安装完成”向导页,并且在一次安装过程结束后会立即关闭安装程序。如果在 [Run] 段里面有一个要被执行的程序使用了 nowait 标记,并且你不希望在该程序被启动之候安装完成窗口还逗留在后台,此时该项是有用的。 

注意安装程序认为要重新启动计算机,或如果指派了一个文件给 [Setup] 段的 InfoAfterFile 关键字,都将忽略 DisableFinishedPage 关键字。象这些情况,仍然会显示“安装完成”向导页。 

[Setup]: DisableProgramGroupPage 
有效值: yes 或 no 
默认值: no 

说明: 
如果该项设置为 yes, 安装程序将不会显示“选择程序组”向导页。在这种情况下,它将使用由 [Setup] 段的 DefaultGroupName 关键字指定的组名,或者“(Default)”如果没有指定组名的话。