代码改变世界

随笔档案-2010年11月

INFO:InstallShield工程中如何通过Registry视图快速实现安装包注册表写入

2010-11-28 19:55 by Kevin.Wan, 2364 阅读, 收藏, 编辑
摘要: 在制作安装包过程中,我们经常会修改系统注册表,所以我们经常写脚本函数操作注册表。其实除了通过脚本函数操作外,我们还可以利用Registry视图实现安装过程的注册表修改。InstallScript工程(设置如下图):注意这里只有IFX_COMPANY_NAME,WINSYSDIR脚本变量可以利用,通过<>设置,下面是最终的安装结果:Basic MSI工程类型(设置如下图):在Basic MSI里可以设置通过[]设置Property Manager中的所有内容,下面是我们安装之后的效果:大家注意,这里我设置了一个脚本变量WINSYSDIR,但在Basic MSI工程类型中是无法识别的。 阅读全文

INFO:InstallShield中通过SUPPORTDIR路径调用安装过程文件失败

2010-11-25 17:50 by Kevin.Wan, 6236 阅读, 收藏, 编辑
摘要: 最近遇到很多朋友利用SUPPORTDIR调用安装过程文件失败,在这里提供解决方法:如果是InstallScript工程,那在脚本中直接通过SUPPORTDIR调用时没有问题。如果是Basic MSI工程,则需要通过MsiGetProperty获取SUPPORTDIR的值,通过这个路径才能够正确找到你的Support Files,直接利用SUPPORTDIR将拿到一个错误的路径,事实上这个文件夹也会在安装过程中存在。额外说明一下,对于安装过程中用到的文件或程序,我们经常选择放到Support Files的Language Independent下,然后通过SUPPORTDIR调用。这些文件只会存 阅读全文

SOLUTION:MSI安装包嵌套调用解决方案

2010-11-25 16:59 by Kevin.Wan, 4253 阅读, 收藏, 编辑
摘要: 首先要感谢网友爱新觉罗.奕,是他首先将此方案发布出来,详细见AppInstall网站中《单MSI引导多MSI安装和卸载》一章,http://www.appinstall.cn/viewthread.php?tid=840&extra=page%3D1。有关安装包嵌套调用,之前也琢磨过很多中办法,IntallScript,InstallScript MSI,MSI各种类型互相嵌套,但惟独发现MSI包无法嵌套,原因很简单,Windows Installer只接受单实例安装。解决方案:1. 首先创建主Basic MSI工程,设计组织你的安装程序。2. 【Installation Design 阅读全文

InstallShield - Kevin Wan博客文章索引列表(001~100)

2010-11-23 01:32 by Kevin.Wan, 3579 阅读, 收藏, 编辑
摘要: INFO:InstallAnywhere的Enterprise版本和Standard版本的主要区别(2010-11-19 17:06) HOWTO:InstallShield中添加一个卸载快捷方式或设置反卸载 - DISK1TARGET(2010-11-19 13:54) HOWTO: InstallShield中通过修改注册表关闭Vista/Windows 7的UAC(2010-11-18 14:20) HOWTO:InstallScript工程中如何在用户协议界面中默认为接受协议(2010-11-1... 阅读全文

HOWTO:卸载InstallShield Professional版本之后,Visual Studio编译报错"An error occurred while validating. HRESULT='80040155'"

2010-11-22 16:56 by Kevin.Wan, 1512 阅读, 收藏, 编辑
摘要: 该问题会在发生在使用InstallShield 7.0 Developer,以及InstallShield 12 Professional版本用户身上。发生InstallShield 7.0影响Visual Studio .Net(VS 2003),InstallShield 12影响Visual Studio 2005的案例。原因是InstallShield在卸载的时候,反注册了Visual Studio的一些关键文件。具体解决办法:遇到上述的客户,可以将下面内容保存到.reg文件中,然后导入到注册表中Code highlighting produced by Actipro CodeHig 阅读全文

INFO:在InstallShield中修改安装包压缩.cab包的大小

2010-11-21 00:48 by Kevin.Wan, 3124 阅读, 收藏, 编辑
摘要: 如果我们用InstallShield打包一个数据非常大的安装包(Basic MSI和InstallScript MSI工程类型),默认情况下安装包会产生多个.cab文件,这里简单说明我们如何修改安装包中.cab文件的大小。首先,有个信息大家需要知道,单个.cab文件最大不能超过2GB。下面,我们具体来说如何修改默认.cab的大小:在InstallShield安装目录下找到Settings.xml文件,具体路径是: 英文版 - InstallShield安装路径\Support\0409 日文版 - InstallShield安装路径\Support\0411修改之前先备份一份Setti... 阅读全文

INFO:InstallAnywhere的Enterprise版本和Standard版本的主要区别

2010-11-19 17:06 by Kevin.Wan, 2535 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。InstallAnywhere是一款支持跨平台安装的打包工具,可以在一个工程里管理,针对多个平台的安装包,支持Windows,Linux, Mac OS X, Solaris,AIX, HP-UX以及IBM iSeries平台。InstallAnywhere目前开发版本是InstallAnywhere 2010,分Enterprise和Standard两个版本,它们的主要区别:1)支持语言多少不同:Standard支持9种语言(具体包括Simplified Chinese,Traditional Chinese,En 阅读全文

HOWTO:InstallShield中添加一个卸载快捷方式或设置反卸载 - DISK1TARGET

2010-11-19 13:54 by Kevin.Wan, 3660 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。今天讨论的两个功能用到一个系统变量DISK1TARGET,InstallShield 2010中帮助里是这么解释的(DISK1TARGET:This system variable contains the path to the folder in which copies of certain of the installation's files (such as the compiled script file) are placed to enable maintenance installatio 阅读全文

HOWTO: InstallShield中通过修改注册表关闭Vista/Windows 7的UAC

2010-11-18 14:20 by Kevin.Wan, 2486 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。这是一段示例代码,仅供参考。此问题不会彻底解决安装包在Vista/Windows 7上的权限提升问题,至少对本次安装包是无效的。另外,我们也不建议某个应用程序的安装包代替用户决定UAC是否关闭。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnBegin() STRINGszKey,szName,szValue; NUMBERnType,nSize 阅读全文

HOWTO:InstallScript工程中如何在用户协议界面中默认为接受协议

2010-11-18 13:41 by Kevin.Wan, 2536 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。老实说,这个方法是各位网友共享的,之前我自己没想到过这个办法。InstallScript工程中,截止目前,用户协议界面有六个对话框可用,它们分别是:SdLicense,SdLicense2,SdLicenseEx,SdLicense2Ex,SdLicenseRtf和SdLicense2Rtf。我们修改的方法是利用上述对话框中的一个布尔类型的参数,具体位置各函数不一致(其中SdLicense和SdLicenseRtf没有此参数)。在InstallShield 2010中,修改方法如下:- SdLicense其实调用的是 阅读全文

HOWTO:InstallShield中如何调用批处理文件

2010-11-18 09:51 by Kevin.Wan, 7321 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield中调用批处理文件其实是安装打包中很常用的一种手段,通过批处理启动服务,进行数据库初始配置等等。在实际操作中,针对不同工程类型,对批处理的调用还是有很多疑惑困扰着大家,撰写此文希望能帮助到那些被困扰的打包开发人员。这里假设我们的需求是要启动安装路径下的批处理文件Sample.bat。InstallScript工程:这种类型调用批处理相对简单,通过LaunchAppAndWait函数进行调用,下面是简单示例:Code highlighting produced by Actipro CodeH 阅读全文

HOWTO:InstallShield中如何判断IIS是否安装以及安装的版本

2010-11-16 23:41 by Kevin.Wan, 3279 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。近期被问及在InstallShield的脚本中如何判断IIS(Internet Information Services)是否被安装,或者是判断目标机上安装的IIS版本。我们这里是通过读取注册表的方式来进行判断。对于Basic MSI或InstallScript MSI工程,还可以通过IIS_VERSION属性进行判断,大家有兴趣可以去琢磨一下。下面是通过注册表方式判断的示例代码(我们在事件响应函数OnAppSearch进行判断)Code highlighting produced by Actipro CodeHi 阅读全文

INFO:InstallShield中Basic MSI工程类型如何调用InstallScript脚本

2010-11-16 11:40 by Kevin.Wan, 5750 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。这是一个Basic MSI基础知识,有不少网友问,所以我再啰嗦一遍。A. 首先在Installation Designer/Behavior and Logic/InstallScript视图中,选中Files点击鼠标右键选择“New Script File”,默认会生成一个setup.rul的文件,并有一个MyFunction的函数声明和。B. 之后我们在MyFunction函数内添加一行代码:MessageBox("MyFunction", INFORMATION);当然,你也可以修改函数名, 阅读全文

HOWTO:在InstallShield脚本中打开一个URL链接

2010-11-16 10:51 by Kevin.Wan, 2722 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。之前网络中有建议采用如下方法打开一个URL链接:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->LaunchAppAndWait("http://www.cnblogs.com/installshield","",LAAW_OPTION_WAIT);但验证发现无法打开,所以建议用另外一种方式打开一个URL链接:Code hig 阅读全文

HOWTO:InstallShield中如何制作静默安装包-IntallScript或InstallScript MSI工程类型

2010-11-15 14:41 by Kevin.Wan, 6136 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。这篇文章,拖欠大家很久了,之前一直答应朋友们写一篇有关静默安装的文章,结果是一拖再拖。静默安装包(Silent Installation):所谓静默安装包,有这么几个特点:安装过程没有界面;安装过程不需要用户进行任何输入;也不会在Taskbar中显示一个安装程序的Icon。如何创建一个静默安装包:1. 静默安装包的制作是在主程序完成后进行的,先录制静默脚本文件,通过在命令行运行安装包Setup.exe 给入参数/r,这时会启动的依然是有界面操作的安装,按照正常操作方式完成安装。2. 完成上一步之后,会在系统的Wind 阅读全文

HOWTO:InstallShield中如何通过脚本获取“My Documents”路径

2010-11-13 17:37 by Kevin.Wan, 2773 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。如果需要获取当前用户的“我的文档”路径,可以通过以下脚本代码获取:#define CSIDL_PERSONAL 0x0005 // for My Documents prototype NUMBER SHFolder.SHGetFolderPathA(HWND, NUMBER, NUMBER, NUMBER, BYREF STRING);脚本中通过以下代码调用:SHFolder.SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, 0, szMyDocumentsFolder ). 阅读全文

INFO:InstallShield工程中关于.NET依赖项的编译扫描警告

2010-11-10 16:18 by Kevin.Wan, 3451 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在编译InstallShield工程时,如果出现大量的类似警告信息 “ISDEV:warning -6248: Could not find dependent file... of component...”如果你可以确定所打包的应用程序依赖没有问题,可以通过以下方法消除警告:1. 在Installation Designer/Organization/Components视图中,找到相应的Component。2. 在Component的.NET Settings分组中,将属性.NET Scan at Build由 阅读全文

SOLUTION:InstallShield 6.2中如何删除不支持的语言

2010-11-10 09:46 by Kevin.Wan, 2059 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。鉴于目前国内还有客户仍在使用InstallShield早期版本,比如6.x系列,所有有必要将下面的内容与大家一起分享,虽然是一个很简单的问题。对于早期版本6.x中,如果你已经成功创建了一个多语言安装包,然后又想删除某一支持的语言时,你会发现在Project / Settings / Language的选项卡界面中,无法删除已添加的语言,反勾选之后保存,等你再打开时会发现依然是之前的设置。查找到厂商的KB有解决办法,结果发现早期的技术解决方案文章早已被删除,郁闷,所以只能想其他办法。现将解决方法与大家分享:1. 修改之 阅读全文

HOWTO:InstallShield脚本中如何启动某一程序

2010-11-09 13:33 by Kevin.Wan, 3015 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。借着一个朋友要在安装包中启动Outlook的需求,写了一段代码,供有需要者参考。这里先判断目标机是否安装了Office 2003 Outlook,之后启动。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnBegin()STRINGsvInstalledPath,szKeyRoot;NUMBERnvSize,nType;beginRegDBSetD 阅读全文

INFO:InstallAnywhere支持Windows 7

2010-11-06 21:19 by Kevin.Wan, 1106 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。下面是有关InstallAnywhere对Windows 7支持方面的一则说明:1. InstallAnywhere官方支持Windows 7的版本是InstallAnywhere 2009 SP2,但此版本只是支持Windows 7下的安装,但运行环境等内容不支持。2. InstallAnywhere 2010版本全面支持Windows 7。 阅读全文

SOLUTION:InstallShield打包时Basic MSI类型安装包升级之初探讨

2010-11-05 16:46 by Kevin.Wan, 2444 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。安装包升级问题,困扰着众多打包人员,这里浅浅的探讨一下。我们假设有Basic MSI类型的安装包A(Ver1.0),安装包B(Ver1.1)。。。,要求由A能够升级到B。我们这里给出一个方案:1. 安装包B工程可复用A工程,但Product GUID,Update Code,Package Code等重新生成(对于A,B相当于完全不同的另外一个程序)。2. 在安装包B中添加脚本代码,通过LaunchAppAndWait调用MsiExec静默卸载A(利用A的GUID)。3. 添加一个Custom Action调用步骤2 阅读全文

HOWTO:用InstallShield制作安装包时如何实现F1快捷键启动安装帮助文档

2010-11-04 11:12 by Kevin.Wan, 2221 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。如何启动安装帮助文档:在脚本中添加如下代码。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnHelp()begin/*这里假设MySetupHelp.chm在SupportFiles视图中*/LaunchAppAndWait(WINDIR^"Hh.exe",SUPPORTDIR^"MySetupHelp.chm&qu 阅读全文

HOWTO:用InstallShield制作安装包时如何重写取消安装确认部分的逻辑

2010-11-04 11:09 by Kevin.Wan, 2152 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。取消安装确认在脚本中添加如下代码,这里简单弹出一个确认框,我们可以增加一些自定义的内容。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnCanceling()beginif(YES=AskYesNo("Kevin,Areyousureyouwanttocancelthesetup?",YES))thenabort;endif; 阅读全文
点击右上角即可分享
微信分享提示