使用InstallShield制作ASP安装程序

muwenyi 2001-09-21 02:31:51
加精
各位专家好:

我现在在做ASP的安装程序,这样可以方便用户的使用。我使用的InstallShield版本是InstallShield Professional—Standard Edition6.3。
我没有用过这个东东,问题如下:

问题一
通过Project Wizard-generated script 做好了COPY打包工作。可是6.3版本的好象不支持主体Program...Endprogram,因为我看COPY打包的Script脚本就是通过两个Fuction实现的。所以我的脚本加不进去,除非在这两个Fuction中调用!请问是不是6.3版本不能使用Program...Endprogram,如果可以使用的话,应该如何去用?

问题二
想在COPY完ASP程序后直接实现IIS的设置,也就是通过安装程序就可以完成,不需要手动设置,请问怎样去实现呢?

以下就是我用Project Wizard-generated script 做好的两个Fuction,他们不用调用也不用声明定义就自动执行,真是搞不懂呀!我的Script该加在什么地方呢?
// Include header files

#include "ifx.h"
function OnFirstUIBefore()
number nResult,nSetupType;
string szTitle, szMsg;
string szLicenseFile, szQuestion;
string szName, szCompany, szSerial;
string szTargetPath;
string szDir;
string szComponents, szTargetdir;
number nLevel;
LIST listStartCopy;
number nvSize;
begin
nSetupType = TYPICAL;
TARGETDIR = "C:"^"inetpub" ^"wwwroot" ^@PRODUCT_NAME;
szDir = TARGETDIR;
szName = "";
szCompany = "";
szSerial = "";

Dlg_Start:
// beginning of dialogs label

Dlg_SdWelcome:
szTitle = "";
szMsg = "";
nResult = SdWelcome( szTitle, szMsg );
if (nResult = BACK) goto Dlg_Start;

Dlg_SdLicense:
szLicenseFile = SUPPORTDIR ^ "license.txt";
szTitle = "";
szMsg = "";
szQuestion = "";
nResult = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile );
if (nResult = BACK) goto Dlg_SdWelcome;

Dlg_SdRegisterUserEx:
szMsg = "";
szTitle = "";
nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );
if (nResult = BACK) goto Dlg_SdLicense;

Dlg_SdAskDestPath:
szTitle = "";
szMsg = "please select setup folder";
nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
TARGETDIR = szDir;
if (nResult = BACK) goto Dlg_SdRegisterUserEx;

Dlg_SetupType:
szTitle = "";
szMsg = "";
nResult = SetupType ( szTitle , szMsg , "" , nSetupType , 0 );
if (nResult = BACK) then
goto Dlg_SdAskDestPath;
else
nSetupType = nResult;
if (nSetupType != CUSTOM) then
szTargetPath = TARGETDIR;
nvSize = 0;
ComponentCompareSizeRequired(MEDIA,szTargetPath,nvSize);
if (nvSize != 0) then
MessageBox( szSdStr_NotEnoughSpace, WARNING );
goto Dlg_SetupType;
endif;
endif;
endif;

Dlg_SdComponentTree:
if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SetupType;
szTitle = "";
szMsg = "";
szTargetdir = TARGETDIR;
szComponents = "";
nLevel = 2;
if (nSetupType = CUSTOM) then
nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel);
if (nResult = BACK) goto Dlg_SetupType;
endif;

Dlg_ObjDialogs:
nResult = ShowObjWizardPages(nResult);
if (nResult = BACK) goto Dlg_SdComponentTree;

Dlg_SdStartCopy:
szTitle = "";
szMsg = "";
listStartCopy = ListCreate( STRINGLIST );
nResult = SdStartCopy( szTitle, szMsg, listStartCopy );
ListDestroy(listStartCopy);
if (nResult = BACK) goto Dlg_ObjDialogs;

// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100);
return 0;
end;

///////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnMoving
//
// EVENT: Moving event is sent when file transfer is started as a result of
// ComponentTransferData call, before any file transfer operations
// are performed.
//
///////////////////////////////////////////////////////////////////////////////
function OnMoving()
string szAppPath;
begin
szAppPath = TARGETDIR;
RegDBSetItem(REGDB_APPPATH, szAppPath);
RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
end;
// --- include script file section ---

请各位专家帮忙,在论坛中我找到5篇帖子关于Installshield,可是都没有明确的答复,希望朋友们可以帮一帮我,可以解释的清楚一些。我一定会给高分的!
...全文
521 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
muwenyi 2002-01-15
  • 打赏
  • 举报
回复
如果还有什么问题可以直接写信给我!
muwenyi 2002-01-15
  • 打赏
  • 举报
回复
呵呵,收信去吧!
我也曾经为了这个问题快要疯掉了!多亏了tripofdream(梦之旅)的帮忙,所以我现在还“活着”
:)这部分代码可以直接使用,当然要改一些参数了!
lnmail 2002-01-11
  • 打赏
  • 举报
回复
to:muwenyi(咔咔) and to tripofdream(梦之旅)
我因为这个问题要疯了,可以给我一份文档吗?
整个过程的文档最好了,一人给100分。

我的mail是lnmail@lnmail.net
拜托了
chx007 2001-10-30
  • 打赏
  • 举报
回复
可以将osql命令改为isqlw(其实就是查询分析器)这样就不会弹出讨厌的DOS窗口
zc1972 2001-10-26
  • 打赏
  • 举报
回复
up
muwenyi 2001-10-13
  • 打赏
  • 举报
回复
谢谢我们的斑竹梦之旅的热心帮助~
也感谢balloy()的详细解答!
同时谢谢各位“过路人”的关注!
问题解决,给分了~~~~~~!
tripofdream 2001-10-12
  • 打赏
  • 举报
回复
因为建立时用的是AppCreate2 2 ( The application being created is to run in a pooled process ),而AppUnload方法是用来卸载 out-of-process(1)的Application,对于另外两种Application的作用比较复杂;所以应该用AppDelete方法
Sub DeleteVDir(oRoot, szVDir)
On Error Resume Next
Dim oVDir

Set oVDir = Nothing
Set oVDir = oRoot.GetObject("IIsWebVirtualDir", szVDir)

If (Not oVDir Is Nothing) Then
'oVDir.AppUnload
oVDir.AppDelete
'oVDir.SetInfo
End If

StopDefaultWebSite

oRoot.Delete "IIsWebVirtualDir", szVDir
oRoot.SetInfo

StartDefaultWebSite
End Sub
tripofdream 2001-10-12
  • 打赏
  • 举报
回复
呵呵,我又试了一下,问题不在这,其实这个过程中只有一句是必要的
Sub DeleteVDir(oRoot, szVDir)
On Error Resume Next
oRoot.Delete "IIsWebVirtualDir", szVDir
End Sub
调用的参数不对,应该是
call DeleteVDir(oRoot,DirNames(DirNum))

DeleteVDir oRoot,DirNames(DirNum)

muwenyi 2001-10-10
  • 打赏
  • 举报
回复
2 tripofdream(梦之旅) :
不知道为什么,我用你写的那个过程可以将ASP的目录设置为虚拟目录,但是却运行不了?使用IE运行会显示如下错误信息:
网页无法显示
您要访问的网页中存在程序问题,因此无法显示网页。

--------------------------------------------------------------------------------

请尝试下列操作:

打开 localhost 主页,然后寻找指向所需信息的链接。
单击刷新按钮,或者以后重试。

HTTP 403.1 禁止访问:禁止可执行访问
Internet 信息服务

--------------------------------------------------------------------------------

技术信息(支持个人)


背景:
您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。


详细信息:
Microsoft 支持

还有一个问题就是,我写的vbs第一次设置虚拟路径没有什么问题,可是如果此虚拟路径存在的话就不能够再设置了,我试图编写首先判断它是否存在,若存在则删除。但是这一段程序代码好象没有被执行,为什么?
代码如下:
Sub DeleteVDir(oRoot, szVDir)
On Error Resume Next
Dim oVDir

Set oVDir = Nothing
Set oVDir = oRoot.GetObject("IIsWebVirtualDir", szVDir)

If (Not oVDir Is Nothing) Then
oVDir.AppUnload
'oVDir.SetInfo
End If

StopDefaultWebSite

oRoot.Delete "IIsWebVirtualDir", szVDir
oRoot.SetInfo

StartDefaultWebSite
End Sub
我是这样调用的:call DeleteVDir(webSite,ArgDirNames)
ashes 2001-10-09
  • 打赏
  • 举报
回复
gz
seani 2001-10-09
  • 打赏
  • 举报
回复
谢谢tripofdream:不过还没收到,^_^
tripofdream 2001-10-09
  • 打赏
  • 举报
回复
2 seani(番茄酱):
查收.
seani 2001-10-09
  • 打赏
  • 举报
回复
TO trippofdream:
能不能看下你的源程序,我怎么老调试不成功。xkynm@163.net 谢谢!!!!
tripofdream 2001-10-09
  • 打赏
  • 举报
回复
2 咔咔:
我已经用这个mkwebdir.vbs做过安装了,安装成功.
PS:咔咔不1,咔咔2,嘻嘻("2"者,"TO"是也).
seani 2001-10-08
  • 打赏
  • 举报
回复
怎么安装程序编译出错
muwenyi 2001-10-08
  • 打赏
  • 举报
回复
TO tripofdream(梦之旅):
对了,忘记问了,你该过的那个mkwebdir.vbs运行过吗?我也是修改了一下这个文件调成功的!明天我会再仔细看一下你的这段程序!
muwenyi 2001-10-08
  • 打赏
  • 举报
回复
TO tripofdream(梦之旅):
已经可以执行了,不过还有一些小问题,就是……我的子目录也被虚拟了!呵呵,真是太谢谢你了,我自己再好好的看一看吧!等调好了发一份给你看看!
ps:咔咔不2,咔咔1 呵呵!
TO balloy() and tripofdream(梦之旅):
等我那个小问题解决了,我一定给你们分,你们真是好心人呀!
muwenyi 2001-10-08
  • 打赏
  • 举报
回复
to balloy:
我会按照您说的方法再试一下!谢谢!
tripofdream 2001-10-08
  • 打赏
  • 举报
回复
2 muwenyi(咔咔):
还不行吗?
tripofdream 2001-10-08
  • 打赏
  • 举报
回复
其实跟balloy()的一样,不过AppCreate建立的应用程序级只有低和高,而AppCreate2方法有低(0),中(2)和高(1).

Set vDir = vRoot.Create("IIsWebVirtualDir",DirNames(DirNum))
If (Err <> 0) Then
Display "Unable to create " & vRoot.ADsPath & "/" & DirNames(DirNum) &"."
Else
'Set the new virtual directory path
vDir.AccessRead = true
vDir.Path = DirPaths(DirNum)
'*****************************************
'下面是在那个目录建立WEB应用程序
vDir.AppCreate2 2 '0-应用程序保护: 低
'1-应用程序保护: 高
'2-应用程序保护: 中
vDir.AccessScript = true
vDir.AppFriendlyName= DirNames '设定应用程序名
加载更多回复(19)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧