环境:
打包工具: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 恢复设置,避免影响系统的其他程序。