制作32位和64位整合的安装包

环境:

打包工具:IS2014

工程类型:Installscript

              

步骤:

1.将32位的文件和64位的文件放在两个独立的component下

2.分别设置两个component 的属性

1)32位的component 设置64 bit component为NO,,然后Platform Suite(s)为Windows 32-bit Editions(ALL)

2) 64位的component 设置64 bit component为yes,,然后Platform Suite(s) 根据自己软件的情况设置为Windows 64-bit Editions for Itanuim 或Windows 64-bit Editions for AMD

 

 

3.设置路径

1)32位安装包当前安装目录设置为PROGRAMFILES^"XXX"

2)  64位安装包当前安装目录设置为PROGRAMFILES64^"XXX",

如果有涉及system32目录,IS里也提供相应的变量 WINSYSDIR和WINSYSDIR64

 

4制作32位和64位的安装包,还有个比较关键的设置点,就是安装过程出现的默认安装路径的选择,可以这样处理:

1)  将Generation Information 中TARGETDIR目录设置清空;

2)  然后将路径选择的代码修改如下

if(SYSINFO.bIsWow64)then

    TARGETDIR=PROGRAMFILES64^" XXX ";

    nResult = SdAskDestPath( szTitle, szMsg, TARGETDIR, 0 );

        

else

    TARGETDIR=PROGRAMFILES^" XXX ";

    nResult = SdAskDestPath( szTitle, szMsg, TARGETDIR, 0 );

      endif;

这样就一个整合32位和64位为一个安装包就做好了。

 

注意:

1.如果通过写脚本的方式在64位的系统下进行文件的拷贝, 需要在拷贝代码前加入

Disable(WOW64FSREDIRECTION) 重定向到system32 文件夹,解决64系统默认拷贝文件到sysWOW64文件夹。文件拷贝完毕后请Enable(WOW64FSREDIRECTION)恢复设置,避免影响系统的其他程序。

2.还有一个需要注意的,64位的系统下进行文件的拷贝,除了重定向目录外,相应的函数也要写正确,否则也没办法拷贝到想要的目录。比如 32位系统下system32 文件夹对应WINSYSDIR函数,64位系统则对应WINSYSDIR64

3. 如果有涉及要操作64位系统注册表,可以通过REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY开关注册表,否则默认会写入到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node键值下。用完记得REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY 恢复设置避免影响系统的其他程序。

 

posted on 2015-01-09 11:22  奕婷  阅读(1647)  评论(2编辑  收藏  举报