Install Shield Script小结(调用api,com,bat)
老大让我在先前打包程序基础上,把现在项目打包了(web项目)。基本要求是这样子的,用项目包括所需的控件,建虚拟目录。在用户可对SQLSERVER 对行配置,也可安装包内SQLEXPRESS(如果用户配置后无法连接且判断机器内未安装SQLSERVER即安装包内SQLEXPRESS),捣鼓了一星期,把学到的共享下。语法主要看下那个教程就可以,函数直接F1
基本资料:
InstallshieldX安装制作杂记.rar
installshieldjc.rar
再就是InstallShield和帮助,推荐它的官方论坛http://community.installshield.com/
1.用InstallShield Script调用WINAPI方法
如取得机器的登陆用户名。MSDN
GetUserName
The GetUserName function retrieves the name of the user associated with the current thread.
Use the GetUserNameEx function to retrieve the user name in a specified format. Additional information is provided by the IADsADSystemInfo interface.
BOOL GetUserName(.......
LPTSTR lpBuffer,
LPDWORD nSize
);
DLL | Requires Advapi32.dll. |
---|---|
Unicode | Implemented as GetUserNameW (Unicode) and GetUserNameA (ANSI). Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode. |
参照 installshieldjc.rar里的对应于Winapi里的函数类型声明,于api函数签名对应,如下声明使用:
prototype BOOL Advapi32.GetUserNameA(BYREF STRING, BYREF NUMBER );
function OnBegin()
STRING strLogonUser;
NUMBER numLogonUser
begin
// .
numLogonUser = 255 ;
GetUserNameA(strLogonUser, numLogonUser);
MessageBox(strLogonUser,INFORMATION);
// .
end;
function OnBegin()
STRING strLogonUser;
NUMBER numLogonUser
begin
// .
numLogonUser = 255 ;
GetUserNameA(strLogonUser, numLogonUser);
MessageBox(strLogonUser,INFORMATION);
// .
end;
2.用InstallShield Script调用其他Com
例1:使用DOM
prototype WriteConfig(
STRING
);
function WriteConfig(info)
STRING fileName;
OBJECT configDoc, child1,child2;
begin
set configDoc = CoCreateObject( " MSXML.DOMDocument " );
fileName = INSTALLDIR ^ " oceswebs//Web.config " ;
// MessageBox(fileName,INFORMATION);
if configDoc.Load(fileName) then
function WriteConfig(info)
STRING fileName;
OBJECT configDoc, child1,child2;
begin
set configDoc = CoCreateObject( " MSXML.DOMDocument " );
fileName = INSTALLDIR ^ " oceswebs//Web.config " ;
// MessageBox(fileName,INFORMATION);
if configDoc.Load(fileName) then