急!百分求助installshield第二安装为卸载的问题!

yslzhf 2004-07-07 11:32:49
在InstallShield6.22中制作成的安装包, 安装时,如果电脑中已经装了
该系统,则InstallShield6.22会提示你,先卸载. 卸载完,再执行安装程序
才能安装.


问题如下:
1。现在,如果电脑中已经安装该系统,但我想在安装时直接覆盖原来的系统.

(也就是说,不要这样, "必须要先卸载原来系统,才能安装",
而要这样 安装时直接覆盖原来的系统)

请问在哪儿修改InstallShield6.22安装包?


2。我在OnMaintUIBefore这个函数中加入了如下代码:都是在这里找到的,呵呵~~

svResult = SdLoadString(IFX_MAINTUI_MSG);
szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
if (nResult = IDCANCEL) then
exit;
elseif(nResult = IDOK) then
// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
SetTitle("",24,BACKGROUNDCAPTION);
StatusUpdate(ON, 100);

//-->Remove all components
ComponentRemoveAll();
SetTitle("",24,BACKGROUNDCAPTION);
endif;
DeleteDir(TARGETDIR,ALLCONTENTS);
DeleteDir(TARGETDIR,ONLYDIR);
return 0;
可是这样一来,第二安装的时候没有了“修改”和“修复”两项了,怎么再给加上呢?


这两个问题,,谁能帮我解决啊。急啊。
...全文
316 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowWind 2004-10-09
  • 打赏
  • 举报
回复
mark
danielxuao 2004-07-27
  • 打赏
  • 举报
回复
我的意思是另外注册一个ID号,安装的时候就不会和原来的冲突,至于你新的安装程序呢,你可以添加一些功能,比如删除原来不需要的文件,复制新的文件,然后重新启动就可以了
changlele 2004-07-09
  • 打赏
  • 举报
回复
I C
下面这段代码就是出现修复之类的代码
试一试
function OnMaintUIBefore()
NUMBER nResult,nLevel,nType;
STRING szTitle,szMsg,svDir,szComponents,svResult,szCaption;
begin



nType = MODIFY;

Dlg_Start:
Disable(BACKBUTTON);
nResult = SdWelcomeMaint(szTitle, szMsg, nType);
Enable(BACKBUTTON);

Dlg_SdComponentTree:
if (nResult = MODIFY) then
szTitle = "";
szMsg = "";
svDir = TARGETDIR;
szComponents = "";
nLevel = 2;
nResult = SdComponentTree(szTitle, szMsg, svDir, szComponents, nLevel);
if (nResult = BACK) goto Dlg_Start;
// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100);

elseif (nResult = REMOVEALL) then
svResult = SdLoadString(IFX_MAINTUI_MSG);
szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
if (nResult = IDCANCEL) then
goto Dlg_Start;
elseif(nResult = IDOK) then
// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100);

//-->Remove all components
ComponentRemoveAll();
endif;
elseif (nResult = REPAIR) then
// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100);

//-->Reinstall Logged Components
ComponentReinstall();
endif;


DeleteDir(TARGETDIR,ALLCONTENTS);
DeleteDir(TARGETDIR,ONLYDIR);
end;
yslzhf 2004-07-09
  • 打赏
  • 举报
回复
谢了,楼上的,我也找到这个函数的原形了。哈。。。。。。。。结帖。
yslzhf 2004-07-08
  • 打赏
  • 举报
回复
如果能知道OnMaintUIBefore的原来的代码就好了。
yslzhf 2004-07-08
  • 打赏
  • 举报
回复
to:danielxuao(单单)

你说的办法是再弄一个安装程序,可是我给客户的时候,总不能给人家两个程序啊。但还是谢谢你的关注。
yslzhf 2004-07-08
  • 打赏
  • 举报
回复
to:changlele(梦幻水晶)

如果不加那段代码的话,第二次安装会出现“修改”“修复”“卸载”的对话框,是我想要的。可是我还得加上那段代码,因为我在那里要执行一些程序,可是加入后就出现不了上面说的对话框了,而是真接让卸载。也就是说,第二次执行安装程序(不是卸载程序)应该出现“修改”“修复”“卸载”的对话框才对啊。
danielxuao 2004-07-07
  • 打赏
  • 举报
回复
你修改一下GUID就可以安装了,相当于两个不同的安装程序,在Project-》Settings-》New GUID
changlele 2004-07-07
  • 打赏
  • 举报
回复
说得不太明白,加入这段代码后第二次安装会出现什么?

而你真正想要的是什么?
再说具体一点好吗

yslzhf 2004-07-07
  • 打赏
  • 举报
回复
没有人会吗?
yslzhf 2004-07-07
  • 打赏
  • 举报
回复
up

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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