Installshield2010经验总结

来源:互联网 发布:apache怎么读 编辑:程序博客网 时间:2024/05/10 19:20
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;

1.拷贝到system32目录下的文件,在卸载时不能自行删除?

解:使用Deletefile在脚本中删除。

2.文件不能安装到x64系统的system32下?

解:x64系统system32下放的是64位的dll,而sysWOW64下放的反倒是32位的dll,我是用xcopyfile命令拷贝到64位系统的system32目录下。

3.64位系统中system32下的dll删除不掉?

解:拷贝到x64的sys下的dll用deletefile怎么也删除不掉,到最后实在没法,请教高手,disable掉WOW64FSREDIRECTION才把dll给删掉。

4.怎么把一个feature变灰,使其状态不可选择?

解:Installation Designer --> Organization -->Features中,选中要设置的feature,在右边的属性栏中,将Required选为Yes即可,安装时可以看到该feature为选中状态,且勾选框为灰色不可更改状态,即此feature不允许用户选择,一定会安装到目标机上。

5.FeatureSelectItem函数的作用范围?

解:这个函数如果只给跟feature的名字,则该feature下的所有component和子feature都会起作用。

6.FeatureSelectItem函数和setuptype的选择冲突?

解:这两个会以谁最后设定谁就起作用,会覆盖前面的设定。

0 0
原创粉丝点击