Installshield 12 中文系列教程之 配置目标系统 --环境变量
[转自][url]http://chinabin.bokee.com/6671374.html[/url]
使用环境变量
这部分内容不能用到下列项目中:
InstallScript
InstallScript Object
QuickPatch
Smart Device
环境变量是能够通过安装程序设置在目标系统上的一对名称和值,它能够被你的应用程序或者其他的程序访问。
在Environment Variables视图中,你可以通过安装程序在目标系统上创建、设置(修改)和删除环境变量。也可以在视图中配置环境变量属性。
提示:对于Microsoft Windows 95或者98系统上,环境变量是在Autoexec.bat中创建、修改和删除的。在Windows NT4.0或者Windows2000或者更高的系统中环境变量是存储在注册表中的。
设置环境变量
这部分内容不能用到下列项目中:
InstallScript
InstallScript Object
QuickPatch
Smart Device
要创建一个新的环境变量或者修改该现有的环境变量值:
1、打开Environment Variables视图
2、右键单击EnvironmentVariables并选择AddEnvironment Variable。InstallShield将添加一个默认名为 NewEnvironmentVariable x的新环境变量。输入你想创建、修改或删除的环境变量名。
3、在右边窗口的环境变量属性表中编辑属性
环境变量属性
通过配置环境变量属性,你可以指定你想在目标系统上如何编辑现有的环境变量或者创建一个新变量。每一个环境变量的描述如下:
属性
描述
Component
选择你想把这个环境变量关联的构件。如果选择的构件安装或者卸载,根据你在环境变量的属性表中的设置,目标系统上环境变量会被创建、修改或删除。单击省略号按钮打开浏览构件对话框。
Value
输入这个环境变量的路径或值。你可以使用预定义的路径,象[INSTALLDIR]Bin。要输入多个路径,使用分号分隔
提示:如果On Install 属性设置为Remove,Value属性会被清除并且变成只读。
On Install
指明在关联的功能部件在目标系统安装时的动作。选择下列中的一个:
Set-它与Placement属性协同工作,把Value设置成一个现有的环境变量。这个选项将在目标系统中没有指定的环境变量时创建一个环境变量,并且在安装期间进行设置。如果目标系统上已有指定的环境变量,它会在安装期间被设置。
Create-如果目标系统上没有指定的环境变量,将在目标系统上创建指定的环境变量并设置这个变量的值
Remove-从目标系统上删除环境变量
Placement
指明相对于现有的环境变量的值如何放置Value区域内的数据。选择下列选项中的一个:
Append-这个选项把新值追加到现有环境变量值的后面
Prefix-这个选项把新值放置到现有环境变量值的最前面
Replace-这个选项用新值取代环境变量的原有值
提示:如果你在On Install属性中选择了Create并且指定的环境变量在目标系统上已经存在,这个Placement属性指明这个新值如何添加到现有的环境变量中或者是否替代现有的环境变量值。尽管这样,如果指定的环境变量如果在目标系统上不存在,它将被创建并且Placement的选项会被忽略。
On Uninstall
指明在关联的功能部件卸载时,环境变量是否从系统中删除。选择下面选项之一:
Remove-这个选项是在关联的功能部件卸载时从目标系统上删除环境变量。如果On Install属性中设置的是Create,删除是删除整个环境变量。如果On Install属性中设置的是Set,删除是只删除变量值中追加的部分。
Leave-这个选项是在关联的功能部件删除时在系统中保留环境变量或者追加的值。
Type
如果目标系统是Windows NT 或者Windows 2000或者更高,这个属性指明环境变量的使用方式,是整个系统环境变量还是用户环境变量。如果目标系统是Windows9x,这个属性将被忽略。选择下列选项之一:
System-创建修改或删除指定系统环境变量
User-创建修改或删除用户环境变量。这个环境变量针对于那个用户运行的安装程序,即谁登录的系统。
环境变量示例
复制内容到剪贴板
代码:
/********************************************************************\
* The following code creates an environment variable under Windows NT
* for an entire system. You can modify the OnEnd event handler
* function block (or any other function block) to include this example
* code.
*
* NOTE: This code is only for InstallShield running on Windows NT.
* Also, the current user must have administrator privileges for this
* code to work.
\********************************************************************/
#define WM_WININICHANGE 0x001A
#define HWND_BROADCAST 0xffff
NUMBER nResult;
STRING szKey, szEnv;
POINTER pEnv;
begin
szKey = "SYSTEM\\CurrentControlSet\\Control\\SessionManager\\Environment";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nResult = RegDBSetKeyValueEx(szKey, "Fame", REGDB_STRING,"C:\\Test", -1);
if (nResult < 0) then
MessageBox("Failed to Set Environment Variable", WARNING);
else
MessageBox("Successfully Set Environment Variable",INFORMATION);
// Flush the NT registry to all applications.
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );
endif;
// RebootDialog("", "", SYS_BOOTMACHINE);
end;
复制内容到剪贴板
代码:
/********************************************************************\
* The following code creates an environment variable under Windows NT
* for the current user. You can modify the OnEnd event handler
* function block (or any other function block) to include this example
* code.
*
* NOTE: This script is only for InstallShield running on Windows NT.
* Also, the current user must have administrator privileges for this
* code to work.
\********************************************************************/
#define WM_WININICHANGE 0x001A
#define HWND_BROADCAST 0xffff
NUMBER nResult;
STRING szKey, szEnv;
POINTER pEnv;
begin
szKey="Environment";
RegDBSetDefaultRoot(HKEY_CURRENT_USER);
nResult=RegDBSetKeyValueEx(szKey,"Fame",REGDB_STRING,"C:\\test",-1);
if (nResult < 0) then
MessageBox("Failed to Set Environment Variable",WARNING);
else
MessageBox("Successfully Set Environment Variable",INFORMATION);
// Flush the NT registry to all applications.
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );
endif;
//RebootDialog("","",SYS_BOOTMACHINE);
end;
[转自][url]http://chinabin.bokee.com/6671374.html[/url]
使用环境变量
这部分内容不能用到下列项目中:
InstallScript
InstallScript Object
QuickPatch
Smart Device
环境变量是能够通过安装程序设置在目标系统上的一对名称和值,它能够被你的应用程序或者其他的程序访问。
在Environment Variables视图中,你可以通过安装程序在目标系统上创建、设置(修改)和删除环境变量。也可以在视图中配置环境变量属性。
提示:对于Microsoft Windows 95或者98系统上,环境变量是在Autoexec.bat中创建、修改和删除的。在Windows NT4.0或者Windows2000或者更高的系统中环境变量是存储在注册表中的。
设置环境变量
这部分内容不能用到下列项目中:
InstallScript
InstallScript Object
QuickPatch
Smart Device
要创建一个新的环境变量或者修改该现有的环境变量值:
1、打开Environment Variables视图
2、右键单击EnvironmentVariables并选择AddEnvironment Variable。InstallShield将添加一个默认名为 NewEnvironmentVariable x的新环境变量。输入你想创建、修改或删除的环境变量名。
3、在右边窗口的环境变量属性表中编辑属性
环境变量属性
通过配置环境变量属性,你可以指定你想在目标系统上如何编辑现有的环境变量或者创建一个新变量。每一个环境变量的描述如下:
属性
描述
Component
选择你想把这个环境变量关联的构件。如果选择的构件安装或者卸载,根据你在环境变量的属性表中的设置,目标系统上环境变量会被创建、修改或删除。单击省略号按钮打开浏览构件对话框。
Value
输入这个环境变量的路径或值。你可以使用预定义的路径,象[INSTALLDIR]Bin。要输入多个路径,使用分号分隔
提示:如果On Install 属性设置为Remove,Value属性会被清除并且变成只读。
On Install
指明在关联的功能部件在目标系统安装时的动作。选择下列中的一个:
Set-它与Placement属性协同工作,把Value设置成一个现有的环境变量。这个选项将在目标系统中没有指定的环境变量时创建一个环境变量,并且在安装期间进行设置。如果目标系统上已有指定的环境变量,它会在安装期间被设置。
Create-如果目标系统上没有指定的环境变量,将在目标系统上创建指定的环境变量并设置这个变量的值
Remove-从目标系统上删除环境变量
Placement
指明相对于现有的环境变量的值如何放置Value区域内的数据。选择下列选项中的一个:
Append-这个选项把新值追加到现有环境变量值的后面
Prefix-这个选项把新值放置到现有环境变量值的最前面
Replace-这个选项用新值取代环境变量的原有值
提示:如果你在On Install属性中选择了Create并且指定的环境变量在目标系统上已经存在,这个Placement属性指明这个新值如何添加到现有的环境变量中或者是否替代现有的环境变量值。尽管这样,如果指定的环境变量如果在目标系统上不存在,它将被创建并且Placement的选项会被忽略。
On Uninstall
指明在关联的功能部件卸载时,环境变量是否从系统中删除。选择下面选项之一:
Remove-这个选项是在关联的功能部件卸载时从目标系统上删除环境变量。如果On Install属性中设置的是Create,删除是删除整个环境变量。如果On Install属性中设置的是Set,删除是只删除变量值中追加的部分。
Leave-这个选项是在关联的功能部件删除时在系统中保留环境变量或者追加的值。
Type
如果目标系统是Windows NT 或者Windows 2000或者更高,这个属性指明环境变量的使用方式,是整个系统环境变量还是用户环境变量。如果目标系统是Windows9x,这个属性将被忽略。选择下列选项之一:
System-创建修改或删除指定系统环境变量
User-创建修改或删除用户环境变量。这个环境变量针对于那个用户运行的安装程序,即谁登录的系统。
环境变量示例
复制内容到剪贴板
代码:
/********************************************************************\
* The following code creates an environment variable under Windows NT
* for an entire system. You can modify the OnEnd event handler
* function block (or any other function block) to include this example
* code.
*
* NOTE: This code is only for InstallShield running on Windows NT.
* Also, the current user must have administrator privileges for this
* code to work.
\********************************************************************/
#define WM_WININICHANGE 0x001A
#define HWND_BROADCAST 0xffff
NUMBER nResult;
STRING szKey, szEnv;
POINTER pEnv;
begin
szKey = "SYSTEM\\CurrentControlSet\\Control\\SessionManager\\Environment";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nResult = RegDBSetKeyValueEx(szKey, "Fame", REGDB_STRING,"C:\\Test", -1);
if (nResult < 0) then
MessageBox("Failed to Set Environment Variable", WARNING);
else
MessageBox("Successfully Set Environment Variable",INFORMATION);
// Flush the NT registry to all applications.
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );
endif;
// RebootDialog("", "", SYS_BOOTMACHINE);
end;
复制内容到剪贴板
代码:
/********************************************************************\
* The following code creates an environment variable under Windows NT
* for the current user. You can modify the OnEnd event handler
* function block (or any other function block) to include this example
* code.
*
* NOTE: This script is only for InstallShield running on Windows NT.
* Also, the current user must have administrator privileges for this
* code to work.
\********************************************************************/
#define WM_WININICHANGE 0x001A
#define HWND_BROADCAST 0xffff
NUMBER nResult;
STRING szKey, szEnv;
POINTER pEnv;
begin
szKey="Environment";
RegDBSetDefaultRoot(HKEY_CURRENT_USER);
nResult=RegDBSetKeyValueEx(szKey,"Fame",REGDB_STRING,"C:\\test",-1);
if (nResult < 0) then
MessageBox("Failed to Set Environment Variable",WARNING);
else
MessageBox("Successfully Set Environment Variable",INFORMATION);
// Flush the NT registry to all applications.
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );
endif;
//RebootDialog("","",SYS_BOOTMACHINE);
end;