代码改变世界

随笔分类 -  InstallShield

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

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

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

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

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

2010-11-05 16:46 by Kevin.Wan, 2441 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。安装包升级问题,困扰着众多打包人员,这里浅浅的探讨一下。我们假设有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, 2219 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。如何启动安装帮助文档:在脚本中添加如下代码。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, 2148 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。取消安装确认在脚本中添加如下代码,这里简单弹出一个确认框,我们可以增加一些自定义的内容。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnCanceling()beginif(YES=AskYesNo("Kevin,Areyousureyouwanttocancelthesetup?",YES))thenabort;endif; 阅读全文

NEWS:InstallShield 2011 Hotfix A

2010-10-20 15:55 by Kevin.Wan, 2431 阅读, 收藏, 编辑
摘要: InstallShield 2011的Hotfix A允许用户在Basic MSI,Merge Module和Express工程中,添加由InstallShield Collaboration制作的DIM文件,这些DIM文件包含快捷集合或快捷方式。推荐所有的InstallShield 2011 Premier,Professional以及Express用户安装此Hotfix正版用户可以通过Software Manager下载安装。 阅读全文

SOLUTION:InstallScript工程注册用户信息界面中如何忽略公司信息

2010-10-20 09:26 by Kevin.Wan, 2711 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield安装包中,不同工程类型,对于注册用户信息界面的内容校验条件不同。在Basic MSI工程中,公司信息忽略的情况下,“下一步”的按键仍然可用,但在InstallScript和InstallScript MSI工程类型中,如果公司信息为空,则“下一步”按键不可用。解决方法:在脚本编辑界面,选择下拉菜单的Dialog Source,然后选择SdRegisterUser,这样我们将看到SdRegisterUser的源码(见下图)。将其中的代码 EnableWindow( hwndNext, Str 阅读全文

HOWTO:如何静默安装.Net Framework 2.0

2010-10-15 14:34 by Kevin.Wan, 4960 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield 2010之后的版本中,关于.Net Framework的安装,都可以通过Prerequisites调用安装。但在较早的InstallShield版本中,如果使用InstallScript工程,只能通过写脚本的方式通过LaunchAppAndWait直接调用.Net Framework安装包。现说明如果这种情况下静默安装,以.Net Framework 2.0为例(示例安装下载程序链接:http://www.microsoft.com/downloads/details.aspx?Fami 阅读全文

HOWTO:如何通过ServiceAddService修改已经存在的服务启动参数

2010-10-15 13:22 by Kevin.Wan, 4066 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield里,如果通过脚本操作服务,有以下几个函数:ServiceGetServiceState: 获取服务状态ServiceExistsService: 检测服务是否注册到系统中ServiceAddService: 注册服务ServiceRemoveService: 删除服务ServiceStartService: 启动服务ServiceStopService: 停止服务通过上述6个函数,可以很容易完成服务的注册,启动,停止和删除。还有一种情况是,服务已经存在系统中,只是想修改服务的相关参数,比如 阅读全文

FAQ:Component的属性是否可以运行时修改?

2010-10-14 13:17 by Kevin.Wan, 2349 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。有些朋友会提出,在安装包运行时是否可以再去修改Component的某些属性?答案是不可以,Component的属性只可以在设计阶段设置,MSI不允许在运行时动态修改Component的属性。 阅读全文

HOWTO:InstallShield制作的安装包中如何获得用户选择的安装语言

2010-10-13 09:44 by Kevin.Wan, 3729 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。关于如何在安装包内获得用户选择的安装语言,方法如下:InstallScript和InstallScript MSI工程类型: 直接可以用系统变量SELECTED_LANGUAGE获得。Basic MSI工程类型: 通过获取ProductLanguage的Property值得到用户选择的安装语言。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->exportprotot 阅读全文

HOWTO:如何让安装包每次执行都是安装

2010-10-12 14:26 by Kevin.Wan, 3482 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。正常的安装包第一次执行是安装,第二次执行是卸载,但有些客户要求每次执行安装包都是安装。下述方法可以做到每次点击Setup.exe都是安装,但在系统的控制面板“添加/删除”中没有该应用程序,所以说无法卸载。并且只能是InstallScript工程才可以这么做。具体做法是在事件响应函数OnMoveData中找到下列代码,将其注释掉:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/- 阅读全文

HOWTO:Basic MSI工程中,如何让默认Complete安装类型不包括部分Feature

2010-09-29 15:56 by Kevin.Wan, 2775 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在Basic MSI工程类型中,要做到在安装类型界面中,用户即使选择了Complete,默认情况下部分Feature也不进行安装。 首先需要将该Feature的Install Level设置为200(> 默认的Install Level = 100)。 其次,在Dialog视窗中,找到SetupType对话框,选择Behavior,找到PushButton类型的Next控件。 1. 删除默认的AllLocal ALL _IsSetupTypeMin = "Typical"这条数据。 2. 添 阅读全文

HOWTO:如何在Redistributables视图中显示所有的水晶报表(Crystal Reports)Merge Module

2010-09-29 15:41 by Kevin.Wan, 2450 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。如果打开InstallShield,我们在Installation Designer -> Application Data -> Redistributables视图中,只可以看到最新版本的水晶报表(Crystal Reports),现在说明如何让InstallShield显示所有的水晶报表的Merge Module,操作方法如下:1. 首先在InstallShield的Support路径(...<InstallShield>\Support)下找到HideMM.ini这个文件。2. 然后修 阅读全文

Microsoft宣称Visual Studio Installer将退役

2010-09-28 09:15 by Kevin.Wan, 5012 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在今年Visual Studio 2010发布时我们注意到,Visual Studio的用户可以免费获得InstallShield Limited Edition版本(简称InstallShield LE)。Microsoft的Visual Studio Deployment的项目经理Candy Chiang在MSDN中声明,在未来的Visual Studio版本中,Visual Studio Installer将不再提供,取而代之的是InstallShield,详见《ClickOnce and Setup & 阅读全文

HOWTO:如何在InstallScript脚本中完成DLL, OCX的注册

2010-09-26 12:00 by Kevin.Wan, 5340 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。虽然这是一个非常简单的问题,但经常有人会问这样的问题,只能一次次解释说明,所以直接写个简单示例得了。在事件响应函数OnEnd中添加如下代码段:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnEnd()stringszDLL,szReg,szCmd;beginszReg=WINSYSDIR^"regsvr32.exe";szDL 阅读全文

HOWTO:安装完成后刷新Windows桌面

2010-09-25 16:10 by Kevin.Wan, 4041 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。有时我们会遇到同一软件在目标机上安装完成后,在桌面创建的快捷方式图标未更新,导致该问题原因是Windows刷新机制,如果安装测试遇到这种情况,保险起见,在OnEnd添加如下代码,我们主动通知Windows刷新桌面。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include"ifx.h"//CalltoWindowsusedinthe&quo 阅读全文

HOWTO:修改或删除产品在系统注册表中的安装信息

2010-09-20 13:05 by Kevin.Wan, 3930 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。InstallScript工程中,安装包默认会在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{产品GUID}写入产品相关信息。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->functionOnEnd()NUMBERnRootKey;STRINGszKey;begi 阅读全文

如何选择InstallShield工程类型

2010-09-19 15:57 by Kevin.Wan, 6395 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。熟悉InstallShield用户清楚有Basic MSI,InstallScript和InstallScript MSI三种工程类型可选择,如果你初次使用InstallShield,你可能面临一个问题,哪一种工程类型适合你?有些InstallShield使用很久的开发人员,也可能依然存在这样的疑惑。这个答案取决于你的安装打包经验和项目需求。下面,我们通过InstallScript,Basic MSI以及InstallScript MSI的功能特性比较说明,使得你更容易决定选择哪种工程类型。InstallScript 阅读全文

多语言安装包中,多国语言选择下拉菜单内容自定义

2010-09-17 14:59 by Kevin.Wan, 4243 阅读, 收藏, 编辑
摘要: 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在制作多国语言安装包中,默认情况下,多国语言选择的下来菜单中,显示内容单一语言显示,如下图:有些用户可能会要求,按照各自语言去显示上述内容。效果如下图(因语言支持问题,我这里出现部分乱码):具体操作方法如下:在InstallShield安装目录下 ...\InstallShield\2010\Support 找到0x****.ini文件,将其中[Languages]段的内容更换为如下:Code highlighting produced by Actipro CodeHighlighter (freeware)htt 阅读全文