中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
Install Shield制作安装包技巧(反安装篇)
作者:未知 时间:2005-07-27 23:20 出处:CSDN 责编:chinaitpower
              摘要:Install Shield制作安装包技巧(反安装篇)

Install Shield6.22下,反安装是不起作用的,在控制面板中的“添加删除程序”跟本不起作用。须要自行在注册表中写入反安装信息。在Install Shield的其它版本又没有这个问题。

1、开始菜单中增加卸载

在开始菜单中加一个ShortCutTarget设置为<DISK1TARGET>\setup.exe即可。

 

2、注册反安装

prototype RegUnInstall(STRING);                 

 

function RegUnInstall(szKey)  

   STRING svUninstLogFile;

begin

    //反安装的注册

       InstallationInfo(@COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY);

       DeinstallStart(TARGETDIR, svUninstLogFile, szKey, 0);

       RegDBSetItem(REGDB_UNINSTALL_NAME, @PRODUCT_NAME);

       DeinstallSetReference (TARGETDIR ^ @PRODUCT_KEY);   

end;   

 

3、设置反安装路径,用于添加/删除程序(仅用于6.22版)

prototype SetUnInstallPath();           

function SetUnInstallPath() 

   NUMBER nResult;

   STRING szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath;

   STRING szShortCutKey, szProgram, szParam,svTmp, szKey;

  

begin

       //写入反安装数据

      

       RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );

    //[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9D3ABC91-E361-4716-9529-22037C0950EF}]                            

    szKey = "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID;

    szWorkingDir    = WINDIR;

 

    szProgramFolder = SHELL_OBJECT_FOLDER;

    svTmp                  = PROGRAMFILES + "InstallShield Installation Information\\" + PRODUCT_GUID+ "\\setup.exe";

    LongPathToQuote(svTmp, TRUE);

    szParam         = svTmp;

    LongPathToShortPath(szParam);

    svTmp                  = COMMONFILES + "InstallShield\\engine\\6\\Intel 32\\ctor.dll";

    LongPathToShortPath(svTmp);

    szProgram       = "RunDll32" + " " + svTmp + ",LaunchSetup";

    szCommandLine = szProgram + " " + szParam;

    //RunDll32 D:\PROGRA~1\COMMON~1\INSTAL~1\ENGINE\6\INTEL3~1\ctor.dll,LaunchSetup "D:\Program Files\InstallShield Installation Information\PRODUCT_GUID+"\\setup.exe"

    if (RegDBCreateKeyEx (szKey, "UninstallString") >= 0) then

           if RegDBSetKeyValueEx (szKey, "UninstallString", REGDB_STRING, szCommandLine, -1) < 0 then

               return -1;

           endif;    

    endif;

end;


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有