用installshield做安装程序,如何在注册表中添加一个key

mikexwu 2003-05-20 01:32:45
我用的是installshield 6.22版,
我想做一个安装程序,
其中想在安装的机器上的注册表中添加一个项,并付给他一个值.
我在installshield项目的注册表设定里面的
HKEY_LOCAL_MACHINE下添加了一个key,并给他赋了一个值.

将项目重新编译后,我在本机安装,完成.
然后我去查找本机的注册表,就是找不到这个key,
不知道哪个地方出了差错,请指教!
...全文
241 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuaawenlin 2003-05-20
  • 打赏
  • 举报
回复
up
mikexwu 2003-05-20
  • 打赏
  • 举报
回复
问题已经解决,谢谢 bati2003()
mikexwu 2003-05-20
  • 打赏
  • 举报
回复
我想我知道需在哪里添加了,
请问是否是加在这里?
function OnFirstUIBefore()里的
Dlg_Start:
// beginning of dialogs label
//在这里添加代码
对吗?
mikexwu 2003-05-20
  • 打赏
  • 举报
回复
第一次用请多指教:
工程里有一个setup.rul文件,我想是写在这个文件里,
可我不知道哪里是程序的切入点,
就是说写在哪里
我看过一些installscript的语法.
知道程序需要写在
program
endpropram
里面.
可是在这个文件中还有两个墨认的方法,也不知是干什么用的,

是否需要进行什么处理,
我想请你指导一下:
我想在安装程序的开始show 一个messagebox,如下:
MessageBox("hi",INFORMATION);
将这句语句添加到代码中,如何添加?
以下是setup.rul文件的内容:
////////////////////////////////////////////////////////////////////////////////
//
// File Name: Setup.rul
//
// Description: InstallShield script
//
// Comments: This script was generated based on the selections you made in
// the Project Wizard. Refer to the help topic entitled "Modify
// the script that the Project Wizard generates" for information
// on possible next steps.
//
////////////////////////////////////////////////////////////////////////////////


// Include header files

#include "ifx.h"
//program

//OnFirstUIBefore();
//OnMoving();
// endprogram
//


////////////////////// string defines ////////////////////////////

//////////////////// installation declarations ///////////////////

// ----- DLL function prototypes -----


// your DLL function prototypes


// ---- script function prototypes -----


// your script function prototypes

// your global variables



//////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnFirstUIBefore
//
// EVENT: FirstUIBefore event is sent when installation is run for the first
// time on given machine. In the handler installation usually displays
// UI allowing end user to specify installation parameters. After this
// function returns, ComponentTransferData is called to perform file
// transfer.
//
///////////////////////////////////////////////////////////////////////////////
function OnFirstUIBefore()
number nResult,nSetupType;
string szTitle, szMsg;
string szLicenseFile, szQuestion;
string szName, szCompany, szSerial;
string szTargetPath;
string szDir;
string szComponents, szTargetdir;
number nLevel;
LIST listStartCopy;
number nvSize;
begin
// TO DO: if you want to enable background, window title, and caption bar title
// SetTitle( @TITLE_MAIN, 24, WHITE );
// SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION );
// Enable( FULLWINDOWMODE );
// Enable( BACKGROUND );
// SetColor(BACKGROUND,RGB (0, 128, 128));
MessageBox("hi",INFORMATION);
nSetupType = TYPICAL;
TARGETDIR = PROGRAMFILES ^@COMPANY_NAME ^@PRODUCT_NAME;
szDir = TARGETDIR;
szName = "";
szCompany = "";
szSerial = "";

Dlg_Start:
// beginning of dialogs label

Dlg_SdWelcome:
szTitle = "";
szMsg = "";
nResult = SdWelcome( szTitle, szMsg );
if (nResult = BACK) goto Dlg_Start;

Dlg_SdLicense:
szLicenseFile = SUPPORTDIR ^ "license.txt";
szTitle = "";
szMsg = "";
szQuestion = "";
nResult = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile );
if (nResult = BACK) goto Dlg_SdWelcome;

Dlg_SdRegisterUserEx:
szMsg = "";
szTitle = "";
nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );
if (nResult = BACK) goto Dlg_SdLicense;

Dlg_SdAskDestPath:
szTitle = "";
szMsg = "";
nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
TARGETDIR = szDir;
if (nResult = BACK) goto Dlg_SdRegisterUserEx;

Dlg_SetupType:
szTitle = "";
szMsg = "";
nResult = SetupType ( szTitle , szMsg , "" , nSetupType , 0 );
if (nResult = BACK) then
goto Dlg_SdAskDestPath;
else
nSetupType = nResult;
if (nSetupType != CUSTOM) then
szTargetPath = TARGETDIR;
nvSize = 0;
ComponentCompareSizeRequired(MEDIA,szTargetPath,nvSize);
if (nvSize != 0) then
MessageBox( szSdStr_NotEnoughSpace, WARNING );
goto Dlg_SetupType;
endif;
endif;
endif;

Dlg_SdComponentTree:
if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SetupType;
szTitle = "";
szMsg = "";
szTargetdir = TARGETDIR;
szComponents = "";
nLevel = 2;
if (nSetupType = CUSTOM) then
nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel);
if (nResult = BACK) goto Dlg_SetupType;
endif;

Dlg_ObjDialogs:
nResult = ShowObjWizardPages(nResult);
if (nResult = BACK) goto Dlg_SdComponentTree;

Dlg_SdStartCopy:
szTitle = "";
szMsg = "";
listStartCopy = ListCreate( STRINGLIST );
//The following is an example of how to add a string(szName) to a list(listStartCopy).
//eg. ListAddString(listStartCopy,szName,AFTER);
nResult = SdStartCopy( szTitle, szMsg, listStartCopy );
ListDestroy(listStartCopy);
if (nResult = BACK) goto Dlg_ObjDialogs;

// setup default status
SetStatusWindow(0, "");
Enable(STATUSEX);
StatusUpdate(ON, 100);

return 0;
end;

///////////////////////////////////////////////////////////////////////////////
//
// FUNCTION: OnMoving
//
// EVENT: Moving event is sent when file transfer is started as a result of
// ComponentTransferData call, before any file transfer operations
// are performed.
//
///////////////////////////////////////////////////////////////////////////////
function OnMoving()
string szAppPath;
begin
// Set LOGO Compliance Application Path
// TO DO : if your application .exe is in a subfolder of TARGETDIR then add subfolder
szAppPath = TARGETDIR;
RegDBSetItem(REGDB_APPPATH, szAppPath);
RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
end;

// --- include script file section ---
bati2003 2003-05-20
  • 打赏
  • 举报
回复
我原来做的都是用脚本语言写的,因为当时老板对那个东西要求很高,所以我写了一个注册表功能,写了一个加序列号功能,后来想想,还是补难的,至少比VC简单多了,呵呵。

我建议你用脚本写,我原来有些功能没有用脚本写直接在项目中加,都没成功,后来发现还是写脚本方便,又容易维护。
mikexwu 2003-05-20
  • 打赏
  • 举报
回复
我没有用他的脚本语言写,
而是通过在他的resources下的registry sets 里面,
直接添加了一个注册表的key,
我想他既然提供这样的功能我想一定可以用吧,请帮忙看一下是否可以直接加.谢谢!
bati2003 2003-05-20
  • 打赏
  • 举报
回复
你在注册表里的子键建成功没有?如果没成功,则你建子键的语法有误,如果成功,那就是你读取子键的语法有误。installshield脚本语言很简单的,里面的帮助也比较详细。你自己去看看,对照检查一下。

16,548

社区成员

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

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

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