在用Install Shield Professional 6.1,有没有办法判断windows的版本如在Win2000或Win98使用不同的注册表.

jing 2000-04-20 11:54:00
...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jing 2000-04-21
  • 打赏
  • 举报
回复
多谢大哥回答
foxpig 2000-04-20
  • 打赏
  • 举报
回复
在你用 InstallShield 的 ProjectWizard 生成的 IS 项目中,查看“Script”面板,打开 Setup.rul 文件。在 Setup.rul 文件中有一个叫 SetupRegistry 函数,由 IS 进行的注册表设置都在这里。你可以在此判别操作系统版本并对不同的注册表项进行操作。
至于生成一个包的安装程序,我想应该是IS系列的“Packet for the Web”Internet/Intranet Software Distribution工具吧,它可以生成单个的发布文件。你可以到 www.installshield.com 上查看和下载相关工具。网址:
http://www.installshield.com/pftw/

欢迎做进一步的交流。

下面是我的一个注册表操作例子,供你参考(没有判断操作系统,你可以自己加上)。
考虑到版面,有删减。程序中以 @开头的是在 Resource 面板中定义的字符串资源。

///////////////////////////////////////////////////////////////////////////////
//
// Function: SetupRegistry
//
// Purpose: This function makes the registry entries for this setup.
//
///////////////////////////////////////////////////////////////////////////////
function SetupRegistry()
NUMBER nResult;
STRING szBaseKey,szKey,szName,szValue;
STRING szFileName , szSectionName , szKeyName ,svValue;
NUMBER nSize,nType;
STRING szComponent,svResult;
NUMBER nvResult;

begin

// TO DO : Add all your registry entry keys here.

RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );//设置默认的根键

szBaseKey = "\\SOFTWARE" ^ @COMPANY_NAME ^ @PRODUCT_NAME ^ @PRODUCT_VERSION;
// 注:“\\”是必须的,否则IS自动在software前加“.\\”使之成为合法路径名


//处理用户和公司信息
szName = @REG_NAME_COMPANY;
szKey = szBaseKey ^ @REG_COMMON ;
szValue = svCompany;
RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );
szName = @REG_NAME_COMMON_USER;
szKey = szBaseKey ^ @REG_COMMON ;
szValue = svName;
RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );

//处理软件序列号
szName = @REG_SERIALNUMBER;
szKey = szBaseKey ^ @REG_COMMON ;
szValue = svSerial;
RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );

switch (svSetupType)
case "服务器":
szKey = szBaseKey ^ @REG_COMMON ^ @REG_SETUPTYPE;
szName = @REG_SETUPTYPE_SERVER;
szValue = "1";
nSize = -1;
nResult = RegDBSetKeyValueEx ( szKey , szName , REGDB_NUMBER , szValue , nSize );
case "管理机":
szKey = szBaseKey ^ @REG_COMMON ^ @REG_SETUPTYPE;
szName = @REG_SETUPTYPE_MANAGER;
szValue = "1";
nSize = -1;
nResult = RegDBSetKeyValueEx ( szKey , szName , REGDB_NUMBER , szValue , nSize );
endswitch;

// Call registry functions and/or create keys from
// the InstallShield IDE's Resources pane.
//nResult = CreateRegistrySet( "" );
// 上一语句是 IS 自动生成的,被注释掉。
// 因为随着安装类型的不同,注册表项也不同
// 所以暂时不使用 Resources 中的注册表信息


//加入启动文件 Run 注册表项
szKey = @REG_STARTUP_KEY;
szName = @REG_STARTUP_NAME;
szValue = TARGETDIR ^ @EXEFILE_STARTUP;
nSize = -1;
nResult = RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );

//保存安装源路径、目的路径
// 源路径
szKey = szBaseKey ^ @REG_COMMON ;
szName = @REG_INSTALL_SOURCE_PATH_NAME;
szValue = SRCDIR;
nSize = -1 ;
nResult = RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );
// 目的路径
szKey = szBaseKey ^ @REG_COMMON ;
szName = @REG_INSTALL_TARGET_PATH_NAME;
szValue = TARGETDIR;
nSize = -1 ;
nResult = RegDBSetKeyValueEx ( szKey , szName , REGDB_STRING , szValue , nSize );



return nResult;
end;

jing 2000-04-20
  • 打赏
  • 举报
回复
兄弟我想在操作系统版本判定后再对注册进行不同的操做程序写在何处因小弟第一次用它可否有详细实例教之,不胜感激.如何将生成一个包的安装程序呢.
foxpig 2000-04-20
  • 打赏
  • 举报
回复
在Install Shield Professional中有函数:GetSystemInfo (nItem, nvResult, svResult)可以获取系统信息

nItem = OS 时可以判断操作系统,此时 nvResult 返回值为:
IS_WINDOWS - Windows 3.1.
IS_WINDOWSNT - Windows NT.
IS_WINDOWS95 - Windows 95.
由于我用的Install Shield版本为5.1,还不支持 Win98和Win2000,你用的 6.1版应该有 Win98和Win2000 的返回值了。

另外:
nItem = OSMAJOR 时可以获取 操作系统主版本号
nItem = OSMINOR 时可以获取 操作系统子版本号

nItem 的其他取值可以参见GetSystemInfo的帮助。



svResult: N/A

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧