InstallShield常用问题

原创 2012年03月28日 09:36:50
1、 问题描述:采用何种安装模式?
实现方法:如果对用户界面等自定义要求不高的话,建议用Basic Msi Project,否则用InstallScript MSI Project。

2、 问题描述:安装后快捷方式为乱码。
实现方法:将简体中文设为默认安装语言后删除English前的勾。
操作步骤:在Installation Designer页面中Installation Information-General Information->String Tables右击Chinese(simplify)在弹出的快捷菜单中选择Make default,回到Project Assistant页面的相应处去掉English前的勾。

3、 问题描述:安装界面的中文全显示为乱码。
产生原因:之前已编译过英文的安装包。
实现方法:在Bulid菜单中的Release Wizard中修改设置再重新编译即可。

4、 问题描述:如何修改系统默认的安装文件夹?
实现方法:在Information-Product Properties中INSTALLDIR右侧的文本框中单击,再单击文本框右侧的 ,在弹出的Set INSTALLDIR对话框中新建目标文件夹,点击OK后,再次点击 选择刚才建好的那个文件夹。点OK 即可将默认的安装目录修改。

5、 问题描述:怎么在开始程序中加上卸载的快捷方式。
实现方法:在Project Assistant页面的Appication Shotcuts中单击左侧的Create an unlinstallation shotcut。

6、 问题描述:安装时怎么使控件自注册。
实现方法:在Project Assistant页面的中右侧选中控件,右击选择Properties在弹出的对话框中勾上Self Register复选框。

7、 问题描述:怎么实现在卸载时有的控件不被删除。
实现方法:直接单击Installation Designer页面,选中Application Data下的Files and Folders,在Destination computer’s folders中选中不要被卸载的组件,右击选择Properties在弹出的对话框中勾上Permanent复选框(若没有复选框可以在organiztion处的setup design处设置 )

8、 问题描述:怎么在Basic MSI Project安装工程中实现安装后运行指定的安装程序。
实现方法:首先在Installation Designer页面的Behavior and Logic中单击InstallScript,右击Files在弹出的快捷菜单中选择New Script file,然后新建相关函数。例如:
#include "ifx.h"
export prototype RunSetIIS(HWND);
function RunSetIIS(hMSI)
   STRING svResult;
begin    
      if(FindFile(INSTALLDIR,"设置IIS.exe",svResult)=0) then
      LaunchAppAndWait (INSTALLDIR^"设置IIS.exe","AUTORUN",WAIT);
   endif;
end;
然后再在Behavior and Logic中单击Custom Actions, 右击Custom Actions在弹出的快捷菜单中选择Custom Action Wizard在Action Type中选择Run InstallScript code,在Insert into Sequence中的Install Execute Sequence处选择After ISSelRegisterFinalize或者After InstallFinalize都行,其余按向导提示操作。

9、 问题描述:怎么样在安装或卸载过程中停止或开启、重启有关服务。
实现方法:大体操作同8。相关函数LaunchAppAndWait, 以停止win自带的web服务为例:
#include "ifx.h"
export prototype StopWebservice(HWND);
function StopWebservice(hMSI)
begin
LaunchAppAndWait("","net stop w3svc"+"/S",WAIT);
end;

10、问题描述:怎么样在卸载后删除残留文件。
实现方法:大体操作同8。相关函数DeleteDir, DeleteFile,注意不要对INSTALLDIR文件夹进行整个删除,以防安装在根目录时这样的删除操作会造成删除整个盘符的所有数据。

11、问题描述:怎么样在安装完成之后创建新文件夹。
实现方法:大体操作同8。相关函数CreateDir。

12、问题描述:怎么使安装包只一个exe文件。
实现方法:在Bulid菜单中单击Release Wizard,在Media Type对话框处选择Network inage-在Release Configuartion对话框处选中Compress all files,在Windows Installer Location,Installscript Engine处选中Extract engine form Setup.exe,其余按向导提示操作。

13、问题描述:安装时提示有的文件正在使用不能被覆盖,怎么解决。
实现方法:单击Installation Designer页面,选中Application Data下的Files and Folders,在Destination computer’s folders处右击选中show compenents,再选中不要被覆盖的任意一个components,右击选择Properties在弹出的对话框中勾上Never Overwrite复选框。或是直接点击Organazation处的components处选择即可.

14、问题描述:怎么让用户选择安装路径。
实现方法:在project Assistant中installationinterview 处,将第三行的yes选上。

15、问题描述:怎么修改对话框左侧和上部的logo图片。
实现方法:在Project Assistant->Installation Interview:在右上角的More options处有个Use custom images on dialogs

16、问题描述:怎么在初始化安装过程时显示公司的logo作为闪屏。
实现方法:在Installation Designer页面的Behavior and Logic->Support Files->Splash Screen处的Language Independent单击,在files列表处右键Insert files,选取一幅bmp图片添加就是。

17、问题描述:怎么使用脚本在安装过程中调用另一个MSI安装程序。
实现方法:以下是函数片段
string szCommand,szCmdLine;
begin
   szCommand = WINSYSDIR^"msiexec.exe";
   LongPathToShortPath(szCommand);
   szCmdLine =TARGETDIR^"msxmlchs.msi";
   LongPathToShortPath(szCmdLine);
   SdShowMsg("正在安装msxml,请稍候...",TRUE);
   Delay(5);
   if (LaunchAppAndWait( szCommand ,"/i"+szCmdLine,WAIT) < 0) then
      MessageBox("数据文件出现错误",WA RNING);      
   endif;

18、问题描述:怎么设置背景图
      实现方法:以下是函数片段
Enable( BACKGROUND );      
    GetExtents ( nvDx , nvDy);
    if(nvDx=800) then
      PlaceBitmap ( SUPPORTDIR ^ "bbrd1.bmp" , 1 , 800 , 600 ,CENTERED);
    elseif(nvDx=1024) then       
      PlaceBitmap ( SUPPORTDIR ^ "bbrd2.bmp" , 1 ,1024 , 768 ,CENTERED);
    elseif(nvDx=1152) then
      PlaceBitmap ( SUPPORTDIR ^ "bbrd3.bmp" , 1 , 1152 , 864 ,CENTERED);
    endif;

19、使用脚本修改安装程序
  InstallShield开发工具是采用InstallScript语言来运行一个安装程序的,你可以在InstallScript视图中来修改工程的脚本程序。
  InstallScript MSI脚本语言采用的事件驱动模式,也就是说,所有的函数调用是安装一定的顺序来进行的。
  在你的工程中自己定义的函数都会出现你的函数树上,见上图,你可以单击树上函数名称来编辑或者修改该函数。
  事件处理函数(event-handler functions)是不会出现你的函数树上,但是这些函数你的工程也可以使用,当然,此时我们使用的该函数的缺省代码,如果你想修改某个事件处理函数,你可以从事件列表中选择一个事件比如我们选择(Befor Move Data),然后选择一个关于这个事件的函数(比如Begin),然后这个函数的定义就会出现在你的脚本中,在你的脚本中会出现下面的代码。
//////////////////////////////////////////////////////////////////////////////
  //
  // FUNCTION: OnBegin
  //
  // EVENT: Begin event is always sent as the first event during installation.
  //
  //////////////////////////////////////////////////////////////////////////////
  function OnBegin( )
  begin
  // TO DO: you may change default non-UI settings, for example
  //
  // You may also perform your custom initialization steps, check requirements,
  etc.
  end;
你可以在这个函数执行自己的代码了。
下面我们演示一下如何在这个函数添加一个MessageBox函数。

1、首先将begin和end间的//开头的都删除
2、按下CTRL+I弹出添加函数的向导。
3、在函数的种类列表中,选择“Built-in dialog box”.
4、在函数名称中,选择“MessageBox”.单击下一步。
5、In the szMsg field—which contains the message you want to display—type "Welcome to the Tutorial installation!" (including the quotation marks).
6、In the nType drop-down list—which specifies the type of message box to display—select INFORMATION.
7、Click Finish to paste your function call into the script.

最后,其实就是在你的OnBegin函数中添加了如下的代码:
function OnBegin( )
  begin
  MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION
  );
  end;
  当你修改了你的脚本时,你就要重新编译它,这样,当你运行安装程序的时候,在弹出欢迎对话框之前就会弹出这个消息框。InstallScript语言包含了大概250个函数用来处理相关的任务,详细内容参见帮助文档。

20、修改安装界面

处理用户的输入:
在你的安装脚本中,所有处理用户输入对话框的显示只在下面的四个函数中出现
OnFirstUIBefore,这个函数里包含了用户第一次安装该程序,在复制文件之前的所有的对话框。
OnFirstUIAfter,这个函数包含用户第一次安装该程序,在复制文件之后所用到的对话框显示
OnMaintUIBefore,这个函数中包含了用户采用maintenance模式安装时,在复制文件之前的所用到的所有的对话框。
OnMaintUIAfter,这个函数中包含了用户采用maintenance模式安装,在复制文件之后所用到的对话框。
对于InstallScript MSI工程来说,其实这里最重要的还是OnFirstUIBefore and OnMaintUIBefore两个函数,用户无论是第一次安装还是maintenance安装,对话框显示都在这两个函数中,
OnFirstUIBefore函数缺省的情形应该像下面这样吧

Dlg_Start:
  // beginning of dialogs label
  Dlg_SdWelcome:
  szTitle = ""
  szMsg = ""
  nResult = SdWelcome( szTitle, szMsg );
  if (nResult = BACK) goto Dlg_Start;
    Dlg_SdCustomerInformation:
  szMsg = "";
  szTitle = ""; 
  nResult = SdCustomerInformation( szTitle, szName, szCompany, nUser );
  if (nResult = BACK) goto Dlg_SdWelcome;
  ok,关于InstallShield8.0的入门就简单介绍到这里,关于安装程序的制作,以后有机会我会写一些更加详细关于InstallShield的帮助文档,如果大家有有什么问题,希望多交流。

InstallShield的Custom Action

地址:http://www.cnblogs.com/ivybell/ 2012-2-24 静默卸载exe格式的程序 近段时间给用户升级版本,但是旧版本是很早之前的人制作安...
  • wlanye
  • wlanye
  • 2012年07月20日 13:43
  • 3109

Installshield 文件及文件夹操作

http://www.yesky.com/385/153885.shtml

InstallShield中删除某个文件和快捷方式方法

在InstallShield中有时需要一些删除操作,比如在安装新版本时将以前的安装路径做了变换,这样的话win7 就可能会将图标显示不出来,那么就要手动写脚本去删除。下面介绍几个InstallShie...

InstallShield常用问题

1、 问题描述:采用何种安装模式? 实现方法:如果对用户界面等自定义要求不高的话,建议用Basic Msi Project,否则用InstallScript MSI Project。 2、 问题描述:...

一些常用软件静默安装参数(nsis,msi,InstallShield ,Inno)

打包的时候,经常需要安装一些其它的环境库,而又不想让用户繁锁的去选择,这时就需要静默安装,而不同的文件所加的参数了不一致,比如VS的环境库vcredist_x86.exe(这是32位的环境库)后面加/...

一些常用软件静默安装参数(nsis,msi,InstallShield ,Inno)

有时我们在安装程序的时候,希望是静默安装的,不显示下一步下一步,这编访问来教大家如何来操作,现在常用的制作安装程序的软件有,   Microsoft Windows Installer , Windo...
  • jjbob77
  • jjbob77
  • 2011年08月17日 20:14
  • 2713

InstallShield部分常用函数

LaunchAppAndWait和LaunchApp函数 原型如下:    LaunchAppAndWait (szProgram, szCmdLine, lWait);    LaunchAp...
  • gnefniu
  • gnefniu
  • 2012年04月18日 16:47
  • 760

InstallShield使用——几个技术问题介绍

InstallShield使用

InstallShield12命令行模式编译工程的几点问题总结

命令行模式编译生成安装包,可以省去打开installshield IDE的麻烦(打开很慢啊~),尤其是在工程量多,修改文件少的,升级的情况。 1.在IS12的help文档中,有明确的讲述,如何使...

Installshield limited edition for VS2012安装,不能注册问题

Installshield limited edition for VS2012安装,不能注册问题上周有个同事电脑坏了,需要重新安装一台电脑,因为一些旧的工程需要使用Installshield来打包,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:InstallShield常用问题
举报原因:
原因补充:

(最多只允许输入30个字)