`

Installshield 12 安装包制作工具

阅读更多

一. 说明。

 

阅读对象:本人,IS的初学者。
适用版本:Installshield 12。
目的:       为了让初学IS的朋友少走些弯路,虽然不是很好的宝典,但里面很多细节都是制作安装包常碰到

                  的经典问题。另外,也为了给自己留一些资料,方便以后查询,人的记忆力有限嘛。
 内容:      制作一个简单的安装包;制作定制的安装包;其它细节注意;


二. Installshield 介绍。
1. 公司介绍。

 

 

      InstallShield 软件公司是美国的一家专业从事安装软件开发工具生产的著名软件公司。该公司由Viresh Bhatia和Rick Harold于1987年创建。自Windows软件开发之初,InstallShield软件公司就已经专注于通用安装软件制作工具的开发并解决 Windows操作系统发展和变革所带来的挑战,以满足开发人员及最终用户的需要。其主打产品InstallShield为满足各种平台和不同的安装需求 提供完整的软件安装解决方案,并且已经形成人们所熟悉的一套软件安装的工业标准。


2. 产品介绍。


      在微软Windows 2000操作系统引入Windows Installer(WI)服务之前,InstallShield公司以其拥有的标准的标准和技术在同类公司中遥遥领先。但由于WI的出现后,WI使得用 户可以利用微软提供的API函数构建符合微软标准的安装软件,并充分享用微软WI服务的诸多好处。为了跟上安装软件技术的自然进化,满足用户的需求和接受 新挑战,1999年9月,InstallShield 公司开始宣布InstallShield2000 专业版(简称ISPro2K)面世,这是该公司首次将软件安装开发工具划分采用自身传统标准的InstallShield Professional 和采用 微软标准Windows Installer标准的InstallShield for Windows Installer两个不同版本。


三. 制作简单的安装软件。
声明:下面的教程,是把读者当做完全没接触过IS的角度来制作的。
1. 启动InstallShield 12。建立一个InstallShield MSI Project,如图:

Installshield 学习心得体验 - fung - fung

2. 建好后,选择Project Assistant.

Installshield 学习心得体验 - fung - fung

 


你会发现下边有8个选项。接下来就一项一项开始设置。


3. 点击Application Information.
Installshield 学习心得体验 - fung - fung


输入公司名称,应用程序的名称(注意:这个不是打包完后安装包的名称,默认的安装包名称为Setup.exe,不过可以自己定义,稍后讲),版本号,公司网址,选择“添加/删除程序”中的图标。


4. 点击Installation Requirements.
Installshield 学习心得体验 - fung - fung


这里可以选择自己的打包软件适合运行的操作系统和必须安装的第三方软件。选不选根据自己的需要。


5. 点击 Installation Achitecture。
Installshield 学习心得体验 - fung - fung


这里可以定义打包文件的组织结构,默认有个DefaultFeature,将文件放在这个feature下,则都默认是必须安装的。有印象 的朋友会记得,在安装某些软件的时候,会有,“typical(典型)”“custom(自定义)”界面提示,选择典型安装,就是所有文件都安装,选择自 定义安装,就可以去掉一些不需要安装的文件,但其它文件就是必须安装的。这个还是需要自己反复折腾一下才能明白。至于怎么加文件到feature下面,稍 后讲述。


6. 点击 Application Files。


 Installshield 学习心得体验 - fung - fung


这里讲述如何添加文件。上面图片的红色区域中的文件就是我加进去的,加到了安装目录下了(注意:有个INSTALLDIR)。在这里,你就 可以把你要打包的所有文件加进来。加入你安装目录下有文件夹,则先在左边右击GAGA,添加文件夹,再往里面添加文件。注意:添加完文件后,全选文件,右 击,选中“Always Overwrite”。否则有时会出现重新安装后,有些文件没有被覆盖。


7. 点击 Application shortcut。


 Installshield 学习心得体验 - fung - fung


为自己的安装程序生成快捷方式,可以创建 开始菜单和桌面的快捷方式,细心发现的话,你会看见左边有个“Create an uninstallation shortcut”的选项,那个就是用来创建一个卸载方式的,不过很遗憾,这个快捷方式卸载后有时会有些文件删除不干净,不能做到完美卸载。关于怎么创建 卸载快捷方式,做到完美卸载,在后面会讲。


8. 点击 Application Registry。


点完后就直接跳过吧,简单的安装工程,基本不用到这个。要了解如何操作注册表,在后面会说。


9. 点击 Installation Localization。
Installshield 学习心得体验 - fung - fung


这里我们选上“Chinese”,默认是选上英文。如果要设置中文为默认语言的话,需要点击Installation Designer->Installation Information->General Information->String table,右击Chinese,选择 “Make default”。如图:


 

Installshield 学习心得体验 - fung - fung


返回Project Assistant.这下还可以把英文去掉,因为之前英文被设为默认,所以不能直接在这里去掉,非得这么折腾一番。


10.  点击 Build Installation。


  Installshield 学习心得体验 - fung - fung


这里可以选择Single 或者 CD-ROM,区别在于第一种只生成一个.exe文件,而后者会生成好多文件,包括.msi文件等。第一种生成格式适合于制作升级程序,一般的升级程序都 只要一个.exe文件就好了。点击“Build Installations”就可以生成安装包了,生成的安装包,点击"Open release folder”就可以找到了。


四. 制作定制的安装软件。


声明:该部分主要是根据自己本身在项目当中打包安装软件的时候碰到的一些问题,稍微整理一下作为这部分主要讲解的内容,由于项目功能的局限还有本人能力的有限,只能讲解自己解决的一些经典问题,并不能全面覆盖到强大的IS的各个方面,仅供读者参考。
这部分的内容貌似比较吸引人哦,“定制”两字给人比较实用,有趣的感觉。
这部分内容我们和上面制作简单的安装软件走不一样的道路,这部分内容需要新手对IS有一定的折腾后再来看,就比较适合啦。废话不再讲,开始讲解吧。


点击 Installation Designer ,如图:


 Installshield 学习心得体验 - fung - fung


1. 点击 Installation Information
管理员权限安装设置:


点击 General Information ,选择 Summary Information Stream, 选择 Require Administrative Priviledge, 将该项选择 “Yes”。这样设置之后,用户就可以有管理员的权限去安装该安装文件了,避免用户在安装的时候出现权限不够的问题。如图:


 

Installshield 学习心得体验 - fung - fung


更改“添加/删除程序”面板中软件的图标。

 

General Information -> Add or Remove Programs -> Display Icon


设置”添加/删除程序”面板中软件可卸载。


General Information -> Add or Remove Programs -> Disable Change Button, Disable Remove Button, Disable Repair Button,这三个至少要有一个选为“NO”,全部设为“YES”的话,则在这个面板中,对应的软件没有“更改/删除”的按钮可以点击,即在这里就卸载 不了软件了。那就得自己去注册表里胡搞乱改,把它搞掉了。


设置“软件名称”,“版本号”还有“安装路径”。

 

General Information -> Product Properties->NAME ,VERSION,INSTALLDIR


关于“Product Code”和“Upgrade Code”以及版本升级问题。


这两个关乎到版本升级问题,理论上,XP是不允许用户安装两个相同Product Code的同一个软件的,即时,每一个版本的安装包,都必须有新的Product Code。 但其实,很多时候,我们在项目的时候,并不是每一次release都是一个新版本,因为有可能只是更改了一点点,不足以作为一个新版本,这是我们可以称为 是一个小版本,比如,V1.0.0-》V1.0.1。我查了一下帮助文档,找到了”Chaning the Product Code”这篇文章,里面开头有这么一句:An update that meets the following guidelines generally does not require a change of the product code and can be handled as a small update, or if the version is to change, as a minor upgrade。(详细请按F1,官方文档才是王道)
这句话的意思是,当update属于 small update 或者 minor upgrade的时候,就不用更改product code,这两者的区别在于,minor upgrade更改了 product version。除了这两个之外,剩下的一个就是major upgrade,生成这种安装包的时候,就需要更改product code 和 producr version。(还是不明白的请看官方帮助文档)
另外,还有个叫做 package code的东西,当你每次release一个新的安装包的时候,无论是上面哪一个,这个package code都会改变,这是IS给安装包自动重新生成的。不用用户区设置。这是作为每个release包的唯一区别。
总的来说:当你生成一个大版本,如V1.0.0->V2.0.0,这是就需要换Product Code了(方法:General Information -> Product Properties->Product Code, 选中它, 左下方有个Generate GUID的按钮,点击它就可以重新生成,记得与Media->Release->PROJECT_ASSISTANT中的Product Code保持一致,否则在卸载的时候会出现问题),否则就不用更改。
    当小版本实现覆盖安装的时候,记得还要在Media->Upgrades->Update Windows Installer Setup中,common下选中prompt,这样,当你覆盖安装的时候,系统就会提示你是否要覆盖安装,否则则会提示你,已经安装了 某个Product Code 的产品,不让覆盖安装。


去掉安装界面还有卸载界面上面的”InstallShield Wizard”等字眼。


General Information -> String Tables
选中你采用 的那个语言。在“Value”列中,将”InstallShield Wizard”这些字眼全部替换掉空格或者其它信息,自己决定。(注意:安装还有卸载的时候,进入的第一个界面还有最后退出的界面 的”InstallShield Wizard”是去不掉的,因为去掉这些字眼本来就违反了IS的协议,你用别人的东西,肯定要标记一下别人公司的标志)

 

2. 点击 Organization
设置Feature(组件)的安装类型


在制作简单的安装软件的过程中,已经提到过类型安装:Minimal,Custom,Typical .
选择 Setup Types, 你会发现无论点击这三个中的任何一个,DefaultFeature都是必选的。


3. 点击 Application Data
如何添加我要打包的文件到工程中


选择Files and Folders,点击右边的***[INSTALLDIR]这个文件夹,然后在“Source compuoter’s floders”选中你要加入的文件夹,右边的“Source computer’s files”框栏中就显示这些文件,把这些直接拉到“Destination computer’s files”中。(注意:如果发现拉入的文件不对,想要删除,则不能在这里删除,而要到Organization->Components下把文件 删除,这样才能删的彻底,否则会出错。另外,加入好文件后,全选这些文件,右击打开属性,选择”Always Overwrite”,这样可以强制覆盖安装。)


4. 点击 System Configuration
如何建立桌面和开始程序的快捷方式
 

Installshield 学习心得体验 - fung - fung


像上面图片一样,建完快捷方式后,记得把每个快捷方式的”Working Directory”设置为”[INSTALLDIR]”.否则会出错。


5. 点击 Behavior and Logic
怎么定制安装和卸载过程出现的界面


点击Install Script, IS 的installscript在安装的时候首先调用的是OnFirstUIBefore 函数,卸载的时候首先调用的是 OnMaintUIBefore 函数,这两个函数都在 Before Move Data. 而在安装结束时调用的函数是 OnFirstUIAfter 函数,而卸载结束的时候调用的是 OnMaintUIAfter.


如何在卸载的时候不弹出“修改”“修复”“删除”的界面,直接进入删除


在OnMaintUIBefore函数中,从Dlg_Start到Dlg_SdFeatureTree之间的代码全部注释,然后加上nType = REMOVEALL;


如何除去安装和卸载过程中标题中的“InstallShield Wizard”字眼


安装和卸载过程中,第一个出现的界面和最后退出的界面标题的字眼是无法去除的,或者说我不知道怎么去吧,哈…其它界面上的标题可以通过:在OnFirstUIBefore中添加:SetTitle(“安装”+IFX_PRODUCT_NAME,0,BACKGROUNDCAPTION); 卸载也是一个道理,添加以上语句的函数是:OnMaintUIBefore


怎么用脚本创建一个卸载快捷方式,如何“完美卸载”


IS自带的建立卸载快捷方式(Project A Assistant -> Application Shortcuts -> Create an uninstallation shortcut)是有问题的,会出现卸载不完全的现象。解决方法是写脚本:
Install Script -> After More Data -> OnFirstUIAfter 中添加:
STRING szFile;
NUMBER nResult;

szFile = UNINSTALL_STRING + “/UNINSTALL”;
nResult = StrFind(szFile,”.exe”);

if(nResult >= 0) then
StrSub(szMsg1, szFile, 0, nResult + 4);
StrSub(szMsg2, szFile, nResult + 4, 200);

LongPathToQuote(szMsg1, FALSE);
LongPathToQuote(szMsg2, FALSE);

szFile = “\” + szMsg1 + “\” + szMsg2;
        endif;
  
  AddFolderIcon(FOLDER_PROGRAMS ^ “AliProbe”, “Uninstall AliProbe”, szFile, WINDIR, WINDIR ^ “System32\\msiexec.exe”, 0, REPLACE);
   
  然后在OnMaintUIAfter()中添加:

  // 删除开始所有程序中的AliProbe文件夹
  DeleteProgramFolder(“AliProbe”);
  
  // 删除桌面上的快捷方式
  STRING szItemName = “AliProbe”;
  STRING szProgramFolder = FOLDER_DESKTOP;
  DeleteFolderIcon(szProgramFolder, szItemName);
  
  // 删除安装目录文件夹
  DeleteProgramFolder(TARGETDIR);
  
? 向注册表写入安装路径

prototype AliprobeReg(); //声明函数
function AliprobeReg()   
number nRootKey,nType,nSize;
string szKey,szNumName,szNumValue,szClass;
begin     
  //修改注册表
  nRootKey = HKEY_LOCAL_MACHINE;
  RegDBSetDefaultRoot (nRootKey);     //置根为nRootKey 
  //注册子项
  szKey="SOFTWARE\\Aliprobe\\";
  if RegDBKeyExist(szKey) < 0 then    //不存在“SOFTWARE\\Aliprobe”,创建这个项
     RegDBCreateKeyEx(szKey,"");
  endif;
  //初始化每个键的公共值
  nType=REGDB_STRING;
  nSize=-1;
  //注册安装路径
  szNumName="PATH";
  szNumValue=TARGETDIR;
    RegDBSetKeyValueEx(szKey,szNumName,nType,szNumValue,nSize);
end;

在OnInstallFilesActionAfter()中调用上面的函数。


安装结束后启动进程和readme文件


在OnFirstUIAfter()中添加:
szMsg1 = "AliProbe已经安装完成";
    szMsg2 = "";
 bOpt1  = TRUE;
 bOpt2  = TRUE;
 szOption1 = "打开readme文件";
// szOption2 = "启动Aliprobe";     
 szOption2 = "";
 nResult = SdFinish(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);   
 
 if(bOpt1) then    
     if(FindFile(TARGETDIR, "readme.txt", szFile) = 0) then
      LaunchApp(WINDIR^"Notepad.exe", TARGETDIR^"readme.txt");
     endif;
    endif;
    
    if(bOpt2) then
     if(FindFile(TARGETDIR, "AliProbe.exe", szFile) = 0) then
      LaunchApp(TARGETDIR^"AliProbe.exe", "");
     endif;      
    endif; 


6. 点击 Media
对于小版本,提示覆盖安装


当小版本更新的时候,由于Product Code没有更改,所以,必须设置让它提示升级安装。选择Upgrades -> Upgrade Window Installer Setup ,选择Common ,勾上 prompt


如何更改安装包的名字,不要默认的Setup.exe


Release -> PROJECT_ASSISTANT 
 
修改Setup file name就可以了。另外,Product Name 和 Product Version 也要做相应的修改,Product Code 和 Upgrade Code 要保持和 General Information -> Product Properties的Product Code 和 Upgrade Code 要保持一致,否则会出现卸载失败。


五.其它细节注意。
1. Cannot rename directory 或 Error Code = -1014


关闭工程release的目标文件夹,即**/**/../Disk,这个文件夹,此时很有可能因为它开着而导致错误。

http://myswirl.blog.163.com/blog/static/5131864220120551824188/

分享到:
评论

相关推荐

    Installshield 12 安装包制作工具 【图文并茂】

    InstallShield 12 安装包制作工具详解 InstallShield 12 是一个功能强大且广泛应用的安装包制作工具,拥有详细的文档和图文并茂的教程。以下是InstallShield 12 安装包制作工具的详细知识点: 一、InstallShield ...

    installshield制作安装包详解

    自Windows操作系统发展初期,InstallShield就一直致力于为开发者提供高质量的安装软件制作工具,帮助解决在Windows平台上软件安装的各种挑战。 随着Windows 2000操作系统引入了Windows Installer(WI)服务,...

    跟我学使用InstallShield制作安装包

    文档中通过三个虚构的实例详细介绍了使用InstallShield制作安装包的过程,并在附件中收集整理了部分网上流传的文档,对学习使用InstallShield工具制作安装包有一定的参考价值

    Installshield for VC++ 6.0 安装包制作工具

    VC++6.0安装包制作工具,用于发布自己开发好的程序。该InstallShield是专门为Microsoft Visual C++6定制的,所以从Visual C++6开发环境中直接运行InstallShield更快捷方便。  当用户用Visual C++6调试好应用程序后...

    installshield2010下载(安装包制作工具)内含破解文件 免注册版

    installshield2010破解版可以帮助...installshield2010利用强大的压缩技术,可以直接将开发数据压缩为体积较小的文件,内置多语言操作,可以设置开发者的信息,定制运行安装包的条件限制,帮助您设计一个安全的安装包。

    InstallShield安装包制作的安装程序解压工具

    总之,InstallShield安装包制作工具是软件发布的关键环节,其生成的安装程序可以通过特定的解压工具进行分析和修改。汉化和绿化的处理则需要对软件的结构和资源有深入理解。在处理这些文件时,确保了解相关工具的...

    InstallShield 2009 Premier SP1 安装包制作

    InstallShield 2009 Premier SP1 是一款强大的安装包制作工具,用于创建Windows应用程序的安装程序。这个软件允许开发者将他们的程序、依赖项、配置文件等打包成一个易于安装的格式,以便用户可以在目标系统上顺利...

    专业的软件安装包制作工具

    2. **打包工具选择**:市面上有许多专业的安装包制作工具,如Inno Setup、NSIS(Nullsoft Scriptable Install System)、Advanced Installer、InstallShield等。这些工具提供了图形化的界面和脚本语言,便于开发者...

    installshield12离线安装

    InstallShield是一款知名的软件安装制作工具,它允许开发者创建专业级别的安装程序,以便用户可以方便地在Windows操作系统上安装他们的应用程序。在本主题中,我们主要关注的是InstallShield 12的离线安装过程,这...

    Installshield2008制作安装包详解(结合实际项目)

    ### Installshield2008制作安装包详解 #### 第一部分:基本设置 ##### 新建项目与界面介绍 在启动Installshield2008 Premier Edition后,我们首先需要创建一个新的项目。选择“New Project”并选中...

    InstallShield2008驱动安装包制作方法

    ### InstallShield2008驱动安装包制作方法详解 #### 一、概述 在软件开发领域,特别是针对硬件设备的支持,驱动程序的安装是必不可少的一个环节。为了使驱动程序能够被用户更方便地安装,使用专业工具来创建安装包...

    ISCabVu (InstallShield解包工具)

    如果你需要创建或编辑InstallShield安装项目,你还需要使用InstallShield本身或其他类似的安装制作工具。 在IT领域,了解如何利用工具如ISCabVu来解包和分析安装程序是十分重要的技能。这有助于开发者和IT专业人员...

    Installshield 8.0 制作安装包教程

    Installshield 8.0是一个专业级别的安装包制作工具,它支持多种安装类型,包括Windows桌面应用、网络应用、Web安装包等。其用户界面友好,功能强大,能够帮助开发者创建出符合行业标准的安装程序,包括自解压文件、 ...

    InstallShield 解包工具 ISCabVu

    这个工具是 InstallShield 中的一个工具,网上有热心的网友提取出来了这个绿色版,名称就叫iscabvu吧,没其他用处,就是能打开InstallShield制作的cab和hdr文件,用来从安装程序中提取文件,查看注册表写入等,非常...

    InstallShield12集成.net framework4.0环境安装包制作

    ### 使用InstallShield12集成.NET Framework 4.0环境安装包制作详解 #### 一、背景与概述 本文档详细介绍了如何使用InstallShield12工具来创建包含.NET Framework 4.0环境检测与自动安装功能的软件安装包。在实际...

    j2ee项目installshield制作安装包过程(mysql+jdk+tomcat)

    在IT行业中,创建可分发的应用程序安装包是一项关键任务,InstallShield是一款广泛使用的工具,用于制作Windows平台上的安装程序。本文将详细介绍如何使用InstallShield来构建一个包含J2EE项目、MySQL数据库、Java ...

    编程开发-编程工具-installshield(软件安装包制作软件) 免费版.zip

    InstallShield是一款著名的软件安装包制作工具,广泛应用于Windows平台,为开发者提供了创建、打包和部署应用程序的解决方案。这款工具能够帮助程序员将他们的程序代码、资源文件、依赖项等整合成一个用户友好的...

    InstallShield_CAB文件解包工具

    InstallShield 是一个广泛使用的安装制作工具,它支持创建包含 CAB 文件的安装项目。 在IT行业中,了解如何操作和解压 CAB 文件对于软件开发、系统管理和故障排查至关重要。以下是一些关于 InstallShield CAB 文件...

Global site tag (gtag.js) - Google Analytics