我想用INSTALL SHIELD做一个打包安装,并且建立一个卸载的快捷方式,请问如何制作呢!谢谢!
解决方案 »
- ARP
- 请高手帮忙写段代码,急用,谢谢!
- 非MFC DLL 默认生成代码问题?请教!
- 在线急!!!!!帮忙看一下这个程序为什么不对!!!1
- VC如何实现播放3GP或AAC文件
- 背景的刷新使得控件闪烁很厉害怎么办?
- 高手帮忙,如何求程序运行的时间(精确到毫秒)
- vc++6.0能否编写asp的程序?求助!
- Ado的问题:如何才能连续地进行_RecordsetPtr::Open("..."),_RecordsetPtr::Close("...")动作两次以上而不会出错,因为我按此行为动作会发生异常,3QQQ!
- WIN98下,winsock版本为1,如何升级到winsock2
- 菜鸟问题:带COle***的MFC类有什么共同性吗?
- switch...case语句
我用的是 InstallShield Developer 8.02,与 Professional 有些微的不同,建议不要用后者,毛病比较多。Developer版本创建快捷方式的时候无法填入一个string,所以Uninstall 的快捷方式要在脚本中做。
选中 InstallScript,在 OnFirstUIAfter 事件(即安装完成)加入代码 szFilename = UNINSTALL_STRING;
nResult = StrFind(szFilename,".exe");
if ( ( StrFind(szFilename,"\"") < 0 ) && ( nResult >= 0 ) ) then
StrSub(szMsg1,szFilename,0,nResult + 4);
StrSub(szMsg2,szFilename,nResult + 4,200);
szFilename = "\"" + szMsg1 + "\"" +szMsg2;
UNINSTALL_STRING = szFilename;
endif;
AddFolderIcon("我的程序组", "卸载xxx软件", szFilename,
INSTALLDIR, WINDIR ^ "System32\\msiexec.exe", 0, "",NULL); 在 UNINSTALL_STRING 这个 IS 的系统全局常量里面保存了对当前这个安装程序的卸载参数,但 8.02 还有点儿毛病,""的使用不正确导致无法正确使用。所以在用 AddFolderIcon 方法创建快捷方式之前,我先处理了一下 UNINSTALL_STRING,在参数前面对文件路径加入了""。
随后用 AddFolderIcon 在“我的程序组”下创建了一个叫做“卸载xxx软件”的快捷方式,工作路径是INSTALLDIR(无所谓咯),图标文件是系统目录下的 "System32\\msiexec.exe" 的第一个图标——你可以用你自己的。OK啦,只是要注意一个问题:程序组创建给当前用户还是所有人?
如果你的安装流程中有询问用户安装给个人还是所有人,那么 AddFolderIcon 会自动根据其设置的参数选择。否则,你可以用这样的代码来修正一下这个问题: if (Is (USER_ADMINISTRATOR, szIsData) = TRUE) then
ProgDefGroupType (COMMON);
else
ProgDefGroupType (PERSONAL);
endif;
ProgDefGroupType (COMMON)就是告诉相关的函数操作的时候将针对所有人。但如果没有系统管理员权限(比如windows2000/xp),是无法对COMMON环境进行操作的,因此我加了一个判断限制一下。这样程序就很完整了: if (Is (USER_ADMINISTRATOR, szIsData) = TRUE) then
ProgDefGroupType (COMMON);
else
ProgDefGroupType (PERSONAL);
endif; szFilename = UNINSTALL_STRING;
nResult = StrFind(szFilename,".exe");
if ( ( StrFind(szFilename,"\"") < 0 ) && ( nResult >= 0 ) ) then
StrSub(szMsg1,szFilename,0,nResult + 4);
StrSub(szMsg2,szFilename,nResult + 4,200);
szFilename = "\"" + szMsg1 + "\"" +szMsg2;
UNINSTALL_STRING = szFilename;
endif;
AddFolderIcon("我的程序组", "卸载xxx软件", szFilename,
INSTALLDIR, WINDIR ^ "System32\\msiexec.exe", 0, "",NULL);
呵呵,独家秘籍哦,is8.02还是有些小脾气的 x]
Parameters:可不写
Start:<TARGETDIR>
Shortcut:None
Run:默认
IconFile:<TARGETDIR>\*.exe
ICON:显示你运行文件的第几个图标
<TARGETDIR>是获取运行文件的路径
>>AddFolderIcon("我的程序组", "卸载xxx软件", szFilename,
INSTALLDIR, WINDIR ^ "System32\\msiexec.exe", 0, "",NULL); >>用 AddFolderIcon 在“我的程序组”下创建了一个叫做“卸载xxx软件”的快捷方式,工作路径是INSTALLDIR(无所谓咯),图标文件是系统目录下的 "System32\\msiexec.exe" 的第一个图标——你可以用你自己的。这不就是么?
AddFolderIcon(你要创建的程序组名,你要创建的快捷方式名,快捷方式要执行的文件名,执行的程序工作目录,图标文件,图标序号,最后一个不记得我现在不在公司 呵呵)