初次使用InstallShield的笔记(转)

摘要:
步骤1.开始网上说一般的打包工程选择BasicMSIProject,如果需要对界面需要进行很高的定制就需要选择InstallScriptMSIProject。根据需求情况,我自然选择第二种方式2.配置点选InstallationDesigner,进入如下界面红框处就是需要选择配置的区域了。点击OK后Sequences树中多了个DatabaseFolder,可以拖动他到想要的位置。在INIFileChanges中新建一个与欲改写的ini文件同名的ini文件——my.ini在my.ini文件下建立欲改写的section以及keyword,编辑keword在DataValue中写入系统变量[INSTALLDIR],这个就表示程序的安装目录。

公司的产品需要打包发布,以前一直没打包,打包方法的学习交给了我

下面的内容是我研究过后的,通过回忆写的笔记。由于不熟悉,可能会有错误或者是笨办法,希望高手指正,感激不尽。

有些东西是什么,以及是什么意思我也不太清楚,反正我照这么做是满 足了我的需求。

需求如下

项目包含主程序和数据库文件两个部分,可以选择这两个部分安装在不同的地方

当文件都复制完之后将数据库文件的安装路径写进程序安装目录下的一个ini文件当中

工具选择

1. VS05自带的打包工具

一开始选择的这个工具,不过我太菜我确实不知道怎么让这个来满足我们的需求

2. InstallShield 2009 pro

随后想到了专业打包工具IS,下载了较新的版本试用。不过网上教程较少,软件功能强大,因此在慢慢摸索中。

步骤

1. 开始

网上说一般的打包工程选择Basic MSI Project,如果需要对界面需要进行很高的定制就需要选择InstallScript MSI Project。

初次使用InstallShield的笔记(转)第1张

由于我只需要打包,已经执行部分脚本因此我选择了Basic MSI Project。输入Project Name,选择Location后点击OK,新建工程。

进入到下图界面,此时我们可以选择两种打包方式(红框处选择)

1.Project Assistant 可以进行简单的类似向导类的配置即可进行打包工作,如果选择这种方式,Visual Studio自带的工具也能轻松实现

2.Installation Designer 完全自由化的配置,自我定制程度最高。

根据需求情况,我自然选择第二种方式

初次使用InstallShield的笔记(转)第2张

2.配置

点选Installation Designer,进入如下界面

image

红框处就是需要选择配置的区域了。

2.1 General Information

在Installation Information中选择General Information,在这里配置软件的基本信息

image

红线处你可以写上你的大名,你是这个 Project的作者

下面的Setup Langueages可以选择安装语言,我这里只考虑了简体中文,故未更改设置。

R0(NKEJLG6%FKR7[GF~[6EI

红框里填写上你公司的名字和网址,我举个例子才写 的这两个

image

在Product Properties中填入软件的信息,软件的名字、版本什么的。

INSTALLDIR是指安装目录,图中的配置方法默认是指这个路 径: C:\Program Files\Transformers\Demo

2.2 Files

003 File and Folders

右边的区域被分成了四块,上面两块是本地计算 机,下面两块是目标计算机

总的思路跟资源管理一样,这里你就可以按照你自己的思路来定制了

举个列子,我随便找点东西打包

在Destination computer’s folders中把树展开,选中Demo[INSTALLDIR],这是什么东西相信看看就明白了,如果不明白的话那就需要再学习下基础知识了。

从Source computer‘s files(本地计算机)中拖动一些文件到Destination computer’s files中,就会弹出如下提示

image

你需要创建一个Feature,什么是 Feature我不太清楚,我把它理解成一个文件的集合。输入名字,我输入的是Main,点击OK

image

(如果你看不到上图中左边红框内的东西,就在那 里的树状结构任意节点点击右键,勾选Show Components就能看到了)

当你把你想打包的东西添加进入过后,一个最基本的包就打 好了,已经可以编译执行尝试安装了。

image

工具栏上的图标编译跟执行跟VC++6.0的图标 是一样的吧,第三个红圈就是卸载

当然只做到这一步是不能满足我的需求的,我还需要添加一个数据库文件夹,在 Demo[INSTALLDIR]上点击右键——选择New Folder——命名为Database

进行图中操作

image

直接点击下一步,到第二步,按图中操作

image

再下一步,将数据库相关文件都添加进去,当然你 可以先添加一个文件(夹)进去,其余的在“Files and Folders”中继续添加。

至此,数据库文件也添加到了安装包内,不过 默认的安装流程中只有选择主程序的安装路径没有选择数据库的路径,因此需要手动添加。

方法见2.3

2.3 Sequences

大家应该都安装过软件,最菜的人也知道一路点击“下一步”来安装程序。这部分就讲一下如何定制安装的顺序,就是 “上一步”与“下一步”的跳转。

image

最左边选择Custom Actions and Sequences后,在中间的树中如图操作,User Interface上点击右键——Insert…

image

点击OK后Sequences树中多了个 DatabaseFolder,可以拖动他到想要的位置。

当然Sequences的编辑还没那么简单,貌似通过拖动无法实现,需要对每个 窗体进行编辑。

image

如图所示,图中的意思就是在选择 DatabaseFolder的路径的对话框中,点击“上一步”按钮会跳转到CustomerInformation这个对话框中

就是这 样编辑,工作量也不小,或者是有其他什么简便方法,可是我不知道

2.4 动态修改XML或者INI文件

在这个项目中,我需要将项目的安装路径写在安装目录下的一个ini文件中,这个ini文件是需要打包在项目中的。

image

首先确保ini文件已经添加进入打包工程。

image

在INI File Changes中新建一个与欲改写的ini文件同名的ini文件——my.ini

在my.ini文件下建立欲改写的section(我的 例子是installdir)以及keyword(例子中是dir),编辑keword

在Data Value中写入系统变量[INSTALLDIR],这个就表示程序的安装目录。如果要获取数据库的安装目录就可以写入[DATABASEDIR]

XML的修改跟这个类似,相信都可以融会贯通。

在我的实际项目中,遇到个问题。

my.ini是mysql要用到 的东西,是放在数据库目录中的,安装上面的方法略加修改就可以实现。

但是mysql需要的路径类似于C:/MyDataBase /MySql/

而通过我上面方法[DATABASEDIR]获得的路径是Windows标准的 C:\MyDataBase\MySql\

因此我必须要把这个斜线给反过来,我不知道怎么反。只知道可能通过脚本来修改(如果有高人知道简便方法,请指点)

脚本见2.5

2.5 InstallScript

刚刚接触,我连在哪里写脚本都不知道,跟别说如何写脚本了,虽然我现在也不会写脚本~~(求教啊)

虽然还不会写脚本,还是先把在哪里写以及如何运行脚本写出来,希望有跟我有 同样问题的朋友看到。

image

然后出现下图

image

右边是编辑区,用于写脚本。有编程经验的话这个 不难理解

脚本的执行回到Custom Actions and Sequences,在中间的列表中的Custom Actions上点击右键,选择Custom Actions Wizard

在Action Type中选择Run InstallScript code,在Insert into Sequence中的Install Execute Sequence处选择何时执行,其余按向导提示操作。


#include "ifx.h"
export prototype ProcessAfterDataMove(HWND);
export prototype STRING ReplaceStr(STRING);
export prototype RunBat(STRING);

function ProcessAfterDataMove(hMSI)
STRING P_Dir,DB_Dir; // P_Dir是主程序目录下ini文件的路径,DB_Dir是数据库的路径
begin
P_Dir = TARGETDIR + "temp.ini"; //TARGETDIR是系统变 量,存放安装路径
//GetProfString() 函数是系统函数,用于读取ini文件中的信息
//第一个参数指定文件所在路径
//第二个参数指定section名
//第三个参数指定keyword名
//最后一个参数用于 返回 前面指定的keyword的值。注意:是返回!
GetProfString (P_Dir, "temp", "dir", DB_Dir);
//ReplaceProfString()函数是系统函数,用于修改ini文件中 keyword的值
//第一个参数指定文件所在路径
//第二个参数指定section名
//第三个参数指定keyword名
//第四个参数指定keyword原值
//第五个参数指定keyword的新值
//只有前面4个条件完全匹配时,原值才会被第五个参数中的新值替换
ReplaceProfString (DB_Dir + "my.ini", "mysqld", "basedir", "\"" + DB_Dir + "\"", "\"" + ReplaceStr(DB_Dir) + "\"");
ReplaceProfString (DB_Dir + "my.ini", "mysqld", "datadir", "\"" + DB_Dir + "Data\"", "\"" + ReplaceStr(DB_Dir + "Data") + "\"");
// 执行批处理
RunBat(DB_Dir);
end;
function STRING ReplaceStr(Str)
LIST StrList;
STRING temp,path;
begin
//创建List存放 Tokens
StrList = ListCreate(STRINGLIST);
//分解出Token存入List
StrGetTokens( StrList, Str, "\\");
// 取出TokenList的头节点
ListGetFirstString(StrList, temp);
//头节点后加入 “/”
path = temp + "/";
//循环 取出所有的节点 后面加入“/”
while(ListGetNextString(StrList, temp) = 0)
path = path + temp + "/";
endwhile;
return path;
end;
function RunBat(DB_Dir) //执行批 处理
STRING dir;
begin
dir = DB_Dir + "bin\\exec.bat" ;
//调用其他程序
//第一个参数是调用程序的位置
//第二个参数是调用程序运行所需参数
//WAIT表示等到执行完毕这个程序,安装再继续进行
LaunchAppAndWait(dir, "",WAIT);
end;
转自:http://www.cnblogs.com/da2jie/archive/2009/11/04/1594345.html

免责声明:文章转载自《初次使用InstallShield的笔记(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇求两个列表的交集、并集、差集如何用nodejs 开发一个命令行交互工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

利用GetPrivateProfileString读取配置文件(.ini)

配置文件中经常用到ini文件,在VC中其函数分别为:写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);读取.ini文件:DWORD GetPrivateProfileString(L...

Delphi ini文件读写

参考:http://www.cnblogs.com/zhangzhifeng/archive/2011/12/01/2270267.html 一、ini文件的结构 ;这是关于 ini 文件的注释 [节点] 关键字=值 ... ini文件允许有多个节点,每个节点有允许有多个关键字,“=”后面是该关键字的值(类型有三种:字符串、整型数值和布尔值。其中字符串存...

Windows中如何读写INI文件

1.INI文件写入函数 BOOL WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName,LPCTSTR lpString, LPCTSTR lpFileName); lpAppName:INI文件中的一个字段名,也可以有多个字段名,通过这个字段名才能继续去操作我们的键值 lpKeyNa...

C#读写INI文件

虽然微软早已经建议在WINDOWS中用注册表代替INI文件,但是在实际应用中,INI文件仍然有用武之地,尤其现在绿色软件的流行,越来越多的程序将自己的一些配置信息保存到了INI文件中。 INI文件是文本文件,由若干节(section)组成,在每个带括号的标题下面,是若干个关键词(key)及其对应的值(Value) [Section] Key=Value...

Shiro笔记(三)----Shiro配置文件ini详解

一、INI简介INI配置文件是一种key/value的键值对配置,提供了分类的概念,每一个类中的key不可重复,#号代表注释,shiro.ini文件默认在/WEB-INF/ 或classpath下,shiro会自动查找,INI配置文件一般适用于用户少且不需要在运行时动态创建的情景下使用。1.在web.xml中配置shiro的过滤器要使用Shiro必须在we...

C#读写ini文件详解

  原文地址:http://developer.51cto.com/art/200908/143715.htm C#读写ini文件之前要了解的概念:INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打开,主要存放的是用户所做的选择或系统的各种参数. C#读写ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION...