首页 > 经典文章 > 经典美文 > setup,factory

setup,factory

时间:2018-05-29   来源:经典美文   点击:

【www.gbppp.com--经典美文】

setup,factory 第一篇_打包教程文档SetupFactory7

可视化分析个人版WAPE打包教程 打包工具

Setup Factory 7

打包过程

1 新建工程

选择将要打包的文件目录路径

选择一个工程主题

勾选中文语言

按照步骤进行下一步,直至完成,被打包的文件将自动填充到项目里。

2 点击“屏幕”—>工程主题—>安装之前—>编辑“许可协议”

将下面内容复制到许可协议中:

即表示同意接受协议各项条件的约束。如果用户

不同意协议的条件,请不要使用本软件产品。

二、软件产品保护条款

1)本软件产品之著作权及其它知识产权等相关权利或利益(包括但不限于现已取得或未来可取得之著作权、专利权、商标权、

营业秘密等)皆为北京航天理想科技股份有限公司所有。本软件产品受中华人民共和国版权法及国际版权条约和其他知识产权法及条约的保护

。用户仅获得本软件产品的非排他性使用权。

2)用户不得:删除本软件及其他副本上一切关于版权的信息;对本软件进行反向工程,如反汇编、反编译等;

3)本软件产品以现状方式提供,北京航天理想科技股份有限公司不保证本软件产品能够或不能够完全满足用户需求,在用户手册、帮助

文件、使用说明书等软件文档中的介绍性内容仅供用户参考,不得理解为对用户所做的任何承诺。北京航天理想科技股份有限公司保留对软件

版本进行升级,对功能、内容、结构、界面、运行方式等进行修改或自动更新的权利。

4)为了更好地服务于用户,或为了向用户提供具有个性的信息内容的需要,本软件产品可能会收集、传播某些信息,但北京航天理想科技股份有限公司承诺不向未经授权的第三方提供此类信息,以保护用户隐私。

5)使用本软件产品由用户自己承担风险,在适用法律允许的最大范围内,北京航天理想科技股份有限公司在任何情况下不就因使用或不

能使用本软件产品所发生的特殊的、意外的、非直接或间接的损失承担赔偿责任。即使已事先被告知该损害发生的可能性。

6)北京航天理想科技股份有限公司定义的信息内容包括:文字、软件、声音;本公司为用户提供的商业信息,所有这些内容受版权、商

标权、和其它知识产权和所有权法律的保护。所以,用户只能在本公司授权下才能使用这些内容,而不能擅自复制、修改、编撰这些

内容、或创造与内容有关的衍生产品。

7)如果您未遵守本协议的任何一项条款,北京航天理想科技股份有限公司有权立即终止本协议,并保留通过法律手段追究责任。

三、北京航天理想科技股份有限公司具有对以上各项条款内容的最终解释权和修改权。如用户对北京航天理想科技股份有限公司的解释或修改有异议,

应当立即停止使用本软件产品。用户继续使用本软件产品的行为将被视为对北京航天理想科技股份有限公司的解释或修改的接受。

四、因本协议所发生的纠纷,双方同意按照中华人民共和国法律,由北京航天理想科技股份有限公司所在地的有管辖权的法院管辖。

北京航天理想科技股份有限公司

3 检测是否安装过软件

点击“屏幕”—>工程主题—>安装之前—>开始安装 —>编辑

在弹出的窗口中“编辑”选项下的On Preload下写入以下代码:

-- 这些操作在屏幕显示之前执行。

if File.DoesExist("%AppFolder%\\VDK_test.exe") then

-- 如果文件存在,提示并退出安装程序

result = Dialog.Message("通知", "不好意思,软件已经安装过了,将退出安装.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

Application.Exit();

else

Dialog.Message("友情提示","本地未安装过软件", MB_ICONINFORMATION); end

4 设置asit_vdk_dev.ocx控件自动注册

右键asit_vdk_dev.ocx文件选择文件属性

-

在高级选项中 勾选上 “注册COM接口”和“注册类型库”

setup,factory 第二篇_SetupFactory部分功能代码解析

Application.Exit退出安装程序,并返回一个可选的返回代码。

Application.GetInstallLanguage返回一个包含当前安装语言的表格。

Application.GetLastError返回最后的错误代码。

Application.GetWndHandle为安装程序窗口返回数字窗口句柄。

Application.LoadActionPlugin加载一个操作插件文件 (.lmd)。

Application.LoadScript加载并执行一个外部脚本文件 (.lua)。

Application.LoadValue加载保存 Application.SaveValue 操作的值。

Application.Minimize最小化安装程序窗口到任务栏。

Application.Restore恢复安装程序窗口。

Application.RunScriptFile执行外部脚本文件 (.lua) 的内容。

Application.SaveValue保存值到用户的系统,以便今后可用 Application.LoadValue 操作获取。Application.SetInstallLanguage设置指定的语言为安装语言。

Application.SetLastError更改最后的错误代码。

Application.Sleep让安装程序休眠一段时间。

Debug.Clear清除调试窗口的内容。

Debug.GetEventContext返回描述当前事件上下文的字符串,如:"欢迎 > 继续时"。Debug.GetTraceMode返回当前调试跟踪模式。

Debug.Print追加文本到调试窗口的底部。

Debug.SetTraceMode打开或关闭调试跟踪模式

Debug.ShowWindow显示或隐藏调试窗口。

Dialog.FileBrowse显示一个文件浏览对话框,以便用户选择一个或多个文件的路径。Dialog.FolderBrowse显示文件夹浏览对话框,以便用户选择文件夹的路径。

Dialog.Input显示输入对话框,以便获取用户信息。

Dialog.MaskedInput显示输入对话框,以便按指定格式获取用户信息。

Dialog.Message显示带有消息信息的对话框。

Dialog.PasswordInput显示“隐藏输入”对话框,以便获取用户输入的密码。

Dialog.TimedMessage显示带有消息信息的定时对话框。

Dialog.SplashImage显示包含图像的闪屏对话框。

DlgButton.GetProperties获取当前屏幕上按钮控件的属性。

DlgButton.SetProperties设置当前屏幕上按钮控件的属性。

DlgCheckBox.GetProperties获取当前屏幕上检查框的属性。

DlgCheckBox.SetProperties设置当前屏幕上检查框控件的属性

DlgComboBox.AddItem将项目添加到已排序的组合框控件。如果控件未排序,项目将被添加到末尾。

DlgComboBox.GetItemData获取当前屏幕上组合框控件中项目的关联数据字符串。

DlgComboBox.GetItemText返回当前屏幕上组合框控件中项目的文本。

DlgComboBox.GetProperties获取当前屏幕上组合框控件的属性。

DlgComboBox.InsertItem插入项目到组合框控件。

DlgComboBox.RemoveItem从组合框控件中移除项目。

DlgComboBox.SetItemData将组合框控件的项目设置为字符串,以便今后能被检索。DlgComboBox.SetProperties设置当前屏幕上组合框控件的属性。

DlgEditField.GetProperties

获取当前屏幕上编辑栏控件的属性。

DlgEditField.SetProperties设置当前屏幕上编辑栏控件的属性。DlgListBox.AddItem

添加项目到列表框控件。如果列表框已排序,项目被添加到已排序的位置,否则被添加到末尾。注意:此操作仅在从屏幕事件调用和指定的控件在当前屏幕上的时候工作。DlgListBox.DeleteItem从列表框控件中删除项目。

DlgListBox.FindItem基于搜索字符串在列表框中查找项目,并返回其索引

DlgListBox.GetCount返回列表框控件中的项目数量。

DlgListBox.GetItemProperties获取已给出其索引的列表框控件中项目的属性。

DlgListBox.GetProperties获取当前屏幕上列表框控件的属性。

DlgListBox.GetSelected返回指定列表框控件中所有已选项的索引 (行号) 的数字索引表。 DlgListBox.GetSelectedCount返回列表框控件中已选项的数量。

DlgListBox.InsertItem将项目插入到列表框控件中的指定位置。

DlgListBox.SetItemProperties设置已给出其索引的列表框控件中项目的属性。

DlgListBox.SetProperties设置当前屏幕上列表框控件的属性。

DlgListBox.SetUpdate设置列表框控件的更新状态。

DlgProgressBar.GetPos返回进度条控件中进度表的当前位置。

DlgProgressBar.GetProperties返回包含当前屏幕上进度条控件属性的表格。

DlgProgressBar.GetRange返回包含当前屏幕上进度条控件范围的表格。

DlgProgressBar.SetPos设置当前屏幕上进度条控件中进度表的位置。

DlgProgressBar.SetProperties设置当前屏幕上进度条控件的属性。

DlgProgressBar.SetRange设置当前屏幕上进度条控件的范围。

DlgProgressBar.SetStep设置进度条控件的步长值,它将在 DlgProgressBar.Step 被调用时使用。 DlgProgressBar.Step通过在 DlgProgressBar.SetStep 操作中指定的步长数量来增加当前进度。 DlgRadioButton.GetProperties获取当前屏幕上单选按钮控件的属性。

DlgRadioButton.SetProperties设置当前屏幕上单选按钮控件的属性。

DlgScrollingText.AppendLine追加新行到滚动文本控件中的当前文本。【setup,factory】

DlgScrollingText.SetProperties设置当前屏幕上滚动文本控件的属性。

DlgSelectPackages.GetCategoryProperties获取当前屏幕上选择程序包控件中程序包类别的属性。 DlgSelectPackages.SetCategoryProperties设置当前屏幕上选择程序包控件中程序包类别的属性。 DlgSelectPackages.UpdateDisplay基于当前内部数据来更新当前显示的程序包列表。

DlgStaticText.GetProperties获取当前屏幕上静态文本控件的属性。

DlgStaticText.SetProperties设置当前屏幕上静态文本控件的属性。

DLL.CallFunction调用动态链接库 (DLL) 中的函数。它可用于以你自己的函数来扩充 Setup Factory 的功能。

Drive.Eject当给出了有效的盘符时弹出 CD 或 DVD-ROM。

Drive.Enumerate返回包含用户系统上所有驱动器的数字索引表。

Drive.GetFreeSpace获取指定驱动器的剩余磁盘空间,并返回其大小 (MB)。

Drive.GetInformation返回有关指定驱动器的信息表。

Drive.GetSize获取指定硬盘的磁盘空间,并返回其大小 (MB)。

Drive.GetType获取指定驱动器的类型。

Drive.GetUsedSpace获取指定驱动器的已用磁盘空间,并返回其大小 (MB)。

File.Copy复制文件到其他位置。

File.Delete删除文件。

File.DeleteOnReboot下次系统重启时删除文件。

File.DoesExist如果文件存在于指定位置就返回 true,否则返回 false。

File.ExploreFolder浏览用户系统上的文件夹。

File.Find在本地系统上搜索文件。

File.GetAttributes给指定文件返回包含所有属性的表格。

File.GetCRC给指定文件返回 CRC 值。

File.GetDefaultViewer返回路径到与指定文件扩展名关联的默认阅读程序。

File.GetShortName获取文件的完整路径和文件名的“8.3”样式。

File.GetSize返回文件的大小 (字节)。

File.GetVersionInfo给指定文件返回包含所有版本信息的表格。

File.Install将文件安装到用户系统。

File.IsInUse确定指定文件是否正在使用。如果文件正在使用,就不能复制或删除。

File.Move移动文件到其他位置。

File.MoveOnReboot下次系统重启时将文件从一个位置移动到另一个位置。

File.Open用默认的阅读程序打开文档文件。

File.OpenEmail用目标栏中的 Email 地址打开用户的默认 Email 客户端。

File.OpenURL在用户的默认网络浏览器中打开本地文件或网络地址。

File.Print在用户的默认打印机上打印文档。

File.Rename重命名文件。

File.Run运行可执行文件。

File.RunOnReboot下次系统重启时运行执行程序。

File.SetAttributes设置文件的属性。

Folder.Create创建新文件夹。

Folder.Delete删除文件夹。

Folder.DeleteTree删除指定的文件夹及其子文件夹中的所有文件。

Folder.DoesExist如果指定文件夹存在就返回 true,否则返回 false。

Folder.Find搜索文件夹。

Folder.GetCurrent返回“当前文件夹”(工作目录)。

Folder.Rename重命名文件夹。

Folder.SetCurrent设置应用程序的“当前文件夹”(工作目录)。

HTTP.Download从网站上下载文件。

HTTP.DownloadSecure使用 HTTPS (安全超文本传输协议) 从网站下载文件。

HTTP.GetConnectionState检索用户的 Internet 连接状态。

HTTP.GetHTTPErrorInfo检索有关最后发生错误的 HTTP 指定信息。

HTTP.Submit提交数据到网站,并从服务器返回响应。

HTTP.SubmitSecure使用 HTTPS (安全超文本传输协议) 提交数据到网站,并从服务器返回响应。 HTTP.TestConnection检查用户的 Internet 连接。

INIFile.DeleteSection删除指定 INI 文件中的“区段”。

INIFile.DeleteValue删除指定 INI 文件中的“值”。

INIFile.GetSectionNames返回 INI 文件中的所有“区段”名称。

INIFile.GetValue返回指定 INI 文件中与“值”关联的数据。

INIFile.GetValueNames返回 INI 文件的区段中的所有“值”名称。

INIFile.SetValue设置值的数据。

Math.Abs返回数字的绝对值。

Math.Acos返回数字的反余弦 (弧度)。

Math.Asin返回数字的反正弦 (弧度)。

Math.Atan返回数字的反正切 (弧度)。

Math.Atan2返回 Num1/Num2 的反正切 (弧度)。

Math.Ceil返回数字的上限。

Math.Cos返回数字的余弦。

Math.Deg将数字从弧度转换为度数。

Math.Exp返回数字的指数值。

Math.Floor返回数字的下限。

Math.Frexp返回数字(x) 的尾数(m) 和指数(n) (方程式:x = m * 2^n) 的表格。

Math.Ldexp已知尾数(m) 和指数(n) (方程式:x = m * 2^n),返回数字(x)。

Math.Log返回数字的对数。

Math.Log10返回数字的基数为 10 的对数。

Math.Max比较两个数字,并返回最大数。

Math.Min比较两个数字,并返回最小数。

Math.Mod返回 Num1/Num2 的系数。

Math.Pow返回基数乘至指数幂的计算。

Math.Rad将数字从度数转换为弧度。

Math.Random生成随机数。

Math.RandomSeed播种用于 Math.Random 的随机数。

Math.Round按指定的小数位数返回“四舍五入”后的数字。

Math.Sin返回弧度值的正弦。

Math.Sqrt返回数字的平方根。

Math.Tan返回弧度值的正切。

Num弧度角度

ODBC.ConfigDataSource配置 ODBC 数据源。

ODBC.InstallDriver安装 ODBC 驱动程序。

ODBC.InstallManager安装驱动程序管理器。

ODBC.UninstallDriver移除 ODBC 驱动程序,并返回该操作之后驱动程序的使用统计。 ODBC.UninstallManager卸载驱动程序管理器,并返回该操作之后的使用统计。

Registry.CreateKey在用户的注册表中创建“键”。

Registry.DeleteKey从用户的注册表中删除“键”。

Registry.DeleteValue从用户的注册表中删除“值”。

Registry.DoesKeyExist确定是否存在指定的注册表键,并返回 true 或 false。

Registry.GetAccess检查注册表键是否有指定的访问权限,并返回 true 或 false。

Registry.GetKeyNames给指定的键返回包含所有子键名称的表格。

Registry.GetValue返回指定注册表值的数据。

Registry.GetValueName返回指定子键中所有的值名称。

Registry.GetValueType返回注册表值的类型。

Registry.SetValue设置指定注册表值的数据。

Screen.Back返回到一个已查看过的屏幕。此操作类似网络浏览器上的返回按钮。

Screen.End跳转到当前屏幕列表的末尾,并开始安装中的下一个阶段。

Screen.GetFocus获取当前控件的 ID。

Screen.GetLocalizedString获取当前语言中字符串 ID 的文本。

Screen.GetProperties获取当前屏幕的属性。

Screen.Jump跳转到指定屏幕。

Screen.Next依照屏幕管理器中的顺序进入屏幕列表中的下一个屏幕。

Screen.Previous依照屏幕管理器中的顺序进入屏幕列表中的上一个屏幕。

Screen.SetFocus给控件设置焦点。

Screen.SetLocalizedString设置当前语言中字符串 ID 的文本。

Screen.StartTimer启动计时器。

Screen.StopTimer停止计时器。

Service.Continue继续指定的服务。

Service.Create在本地系统中创建服务。

Service.Delete从服务数据库中删除指定的服务。

Service.Pause暂停指定的服务。

Service.Query查询指定服务的状态。

Service.Start启动服务。 Service.Stop停止服务。

SessionVar.Expand返回包含给定的会话变量的内容的字符串。

SessionVar.Get返回未展开的会话变量的内容。

SessionVar.Remove在运行时从会话变量管理器中移除给定的会话变量。

SessionVar.Set将给定的会话变量设置为指定的值。

SetupData.CalculateRequiredSpace计算安装所需的磁盘空间。

SetupData.GetAppShortcutFolderPath获取存放应用程序快捷方式的文件夹。

SetupData.GetFileListSetupData.GetLocalizedString获取全局字符串的定位文本 (基于当前安装语言)。

【setup,factory】

SetupData.GetPackageList返回包含在当前安装程序中的程序包 ID 的数字索引表。 SetupData.GetPackageProperties返回包含给定的程序包属性的表。

SetupData.GetSerialListNames返回包含所有序列号列表名称的数字索引表。

SetupData.IsValidSerialNumber检查给定的序列号在指定的序列号列表中是否有效。 SetupData.SetLocalizedString设置当前语言中字符串 ID 的文本。

SetupData.SetPackageProperties设置给定的程序包的属性。 SetupData.WriteToLogFile将文本的字符串写入安装或卸载日志文件。

Shell.CreateShortcut创建快捷方式。

Shell.DeleteShortcut移除快捷方式。

Shell.GetFolder返回公共文件夹的路径,如:"My Documents" 或用户的启动文件夹。 StatusDlg.GetMeterPos返回状态对话框的当前状态表位置。

StatusDlg.Hide隐藏内建的状态对话框。

StatusDlg.IsCancelled如果点击了内建状态对话框上的取消按钮就返回 true,否则返回 false。 StatusDlg.SetMessage设置内建状态对话框上的主要描述信息。

StatusDlg.SetMeterPos设置内建状态对话框上的状态表位置。

StatusDlg.SetMeterRange设置内建状态对话框的状态表的范围。

StatusDlg.SetStatusText设置内建状态对话框上的状态文本。这是显示在状态表上的文本。 StatusDlg.SetTitle设置内建状态对话框上的标题栏。

StatusDlg.SetCancelled设置内建状态对话框上取消按钮的已点击/未点击状态。

StatusDlg.Show显示内建状态对话框。

StatusDlg.ShowCancelButton显示或隐藏内建状态对话框上的取消按钮。

StatusDlg.ShowProgressMeter显示或隐藏内建状态对话框上的进度表。

String.AbbreviateFilePath返回简短的文件路径。

String.Asc返回字符的 ASCII 代码 (十进制)。

setup,factory 第三篇_在Setup Factory 7.0中添加文件关联

在Setup Factory 7.0中添加文件关联

在SetupFactory7中添加文件关联,以ViewData.exe为例:

[屏幕]-[安装之后]-[编辑]-[操作]-[On Preload],在脚本编辑器中,选择[On Preload]项,写入下面的脚本:

Registry.CreateKey(HKEY_CLASSES_ROOT,"sdbfile")

Registry.SetValue(HKEY_CLASSES_ROOT, "sdbfile", "", "sequh db file", REG_SZ);

Registry.CreateKey(HKEY_CLASSES_ROOT,".sdb")

Registry.SetValue(HKEY_CLASSES_ROOT, ".sdb", "", "sdbfile", REG_SZ); Registry.CreateKey(HKEY_CLASSES_ROOT,"sdbfile\\shell\\open\\command") Registry.SetValue(HKEY_CLASSES_ROOT, "sdbfile\\shell\\open\\command", "","\"" .. SessionVar.Expand("%AppFolder%\\ViewData.exe") .. "\"" .. " \"%1\"", REG_SZ);

Registry.CreateKey(HKEY_CLASSES_ROOT,"sdbfile\\DefaultIcon")

Registry.SetValue(HKEY_CLASSES_ROOT, "sdbfile\\DefaultIcon", "","\"" .. SessionVar.Expand("%AppFolder%\\34.ico") .. "\"", REG_SZ); 一些说明:

建立文件关联需要四步:

1、建立sdbfile项,并设置该项的默认值=sequh db file

2、建立.sdb项,并设置该项的默认值=sdbfile(就是上面建立的项名)

3、建立sdbfile\shell\open\command项,并设置该项默认值=viewdata.exe %1

4、建立sdbfile\defaulticon项,并设置该项默认值=图标文件名全路径

setup,factory 第四篇_Setup Factory 7 注册表实例

【setup,factory】

Setup Factory 7 注册表实例

*-----------------------------

SF7的注册表操作,以下是一个例子,主要靠点击各个按钮来进行控制。

主要有:创建键,删除键,创建键值,删除键值,读取注册表信息,判断是否有键值等。

if (e_MsgID == MSGID_CLICKED) then

-- 点击了控件...

if (e_CtrlID == CTRL_BUTTON_01) then

-- 在这里插入按钮控制代码,第一个按钮

Registry.CreateKey(HKEY_LOCAL_MACHINE, "Software\\Build");

Dialog.Message("创建", "您创建了一个注册表项!", MB_OK, MB_ICONNONE);

end

if (e_CtrlID == CTRL_BUTTON_02) then

-- 在这里插入按钮控制代码,第二个按钮

Registry.DeleteKey(HKEY_LOCAL_MACHINE, "Software\\Build");

Dialog.Message("删除", "您删除了一个注册表项!", MB_OK, MB_ICONNONE);

end

if (e_CtrlID == CTRL_BUTTON_03) then

-- 在这里插入按钮控制代码,第三个按钮

Registry.SetValue(HKEY_LOCAL_MACHINE, "Software\\Build", "Key1", "字符串值", REG_SZ);

Registry.SetValue(HKEY_LOCAL_MACHINE, "Software\\Build", "Key2", "11 00 11 12", REG_BINARY); Dialog.Message("创建键值", "您创建了两个个注册表键值!", MB_OK, MB_ICONNONE);

end

if (e_CtrlID == CTRL_BUTTON_04) then

-- 在这里插入按钮控制代码,第四个按钮

Registry.DeleteValue(HKEY_LOCAL_MACHINE, "Software\\Build", "Key1");

Dialog.Message("删除", "您删除了一个注册表键值!", MB_OK, MB_ICONNONE);

end

if (e_CtrlID == CTRL_BUTTON_05) then

-- 在这里插入按钮控制代码,第四个按钮

RKEY1 = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software\\Build", "Key1", true);

RKEY2 = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software\\Build", "Key2", true);

SessionVar.Set("%PATCH1%", RKEY1);

SessionVar.Set("%PATCH2%", RKEY2);

-- 获得键值,并存到变量中,注意变量要事先在主界面的“会话变量”添加,也可以使用 Local 定义局部变量

TKEY1 = Registry.GetValueType(HKEY_LOCAL_MACHINE, "Software\\build", "Key1");

TKEY2 = Registry.GetValueType(HKEY_LOCAL_MACHINE, "Software\\build", "Key2");

SessionVar.Set("%TYPE1%", TKEY1);

SessionVar.Set("%TYPE2%", TKEY2);

-- 获得键值类型,并存到变量中,注意变量要事先在主界面的“会话变量”添加,也可以使用 Local 定

义局部变量

Screen.Next();

Screen.Back();

-- 这两个命令用于快速的闪回前进屏幕,以便让大家看清楚变化

Dialog.Message("获得键值", "您获得了两个注册表键值和他们的类型!", MB_OK, MB_ICONNONE); end

if (e_CtrlID == CTRL_BUTTON_06) then

-- 判断是否有一个键值

BUILD = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\Build");

if (BUILD == true) then

Dialog.Message("注意", "该键值存在", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); else if (BUILD == false) then

Dialog.Message("注意", "没有该键值", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); end

end

end

end

/////////////////////////////////////////////VC 操作注册表////////////////////////////////////////////////////

void CRegeditDlg::OnQuery()

{

UpdateData(true);

//查询有关的数据 LPBYTE owner_Get=new BYTE[80];//定义用户姓名 owner_Get DWORD type_1=REG_SZ;//定义数据类型 DWORD cbData_1=80;//定义数据长度 //打开与路径 data_Set相关的hKEY LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\"; //访问注册表,hKEY则保存此函数所打开的键的句柄 long if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行 { } AfxMessageBox("错误:无法打开有关的hKEY"); return; HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭 ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));

if(ret1!=ERROR_SUCCESS) { } //查询公司名 LPBYTE company_Get=new BYTE[80];//定义公司名称 company_Get DWORD type_2=REG_SZ;//定义数据类型 DWORD cbData_2=80;//定义数据长度 long AfxMessageBox("错误:无法查询有关的注册表信息"); return; ret1=::RegQueryValueEx(hKEY,"RegisteredOwner",NULL,&type_1,owner_Get,&cbData_1);

ret2=::RegQueryValueEx(hKEY,"RegisteredOrganization",NULL,&type_2,company_Get,&cbData_2);

//程序结束,关闭打开的hKEY ::RegCloseKey(hKEY); UpdateData(false); //显示信息 m_strOwner=CString(owner_Get); m_strCompany=CString(company_Get); delete[] owner_Get; delete[] company_Get; if(ret2!=ERROR_SUCCESS) { } AfxMessageBox("错误:无法查询有关的注册表信息"); return;

}

////////////////////////////////////////////////////////////////

void CRegeditDlg::OnModify()

{

HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭 //打开与路径 data_Set相关的hKEY UpdateData(true);

;

//访问注册表,hKEY则保存此函数所打开的键的句柄 long if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行 { } //设置有关的数据 LPBYTE owner_Set=CString_To_LPBYTE(m_strOwner);//定义用户姓名 owner_Set DWORD type_1=REG_SZ;//定义数据类型 DWORD cbData_1=m_strOwner.GetLength()+1;//定义数据长度 long if(ret1!=ERROR_SUCCESS) { } //查询公司名 LPBYTE company_Set=CString_To_LPBYTE(m_strCompany);//定义公司名称 DWORD type_2=REG_SZ;//定义数据类型 DWORD cbData_2=m_strCompany.GetLength()+1;//定义数据长度 long AfxMessageBox("错误:无法设置有关的注册表信息"); return; AfxMessageBox("错误:无法打开有关的hKEY"); return; ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY)); //CString_To_LPBYTE,请参考下面的函数 ret1=::RegSetValueEx(hKEY,"RegisteredOwner",NULL,type_1,owner_Set,cbData_1); company_Set ret2=::RegSetValueEx(hKEY,"RegisteredOrganization",NULL,type_2,company_Set,cbData_2)if(ret2!=ERROR_SUCCESS) { } AfxMessageBox("错误:无法设置有关的注册表信息"); return;

} { } //程序结束,关闭打开的hKEY ::RegCloseKey(hKEY); UpdateData(false); AfxMessageBox("注册表修改完成");

setup,factory 第五篇_MAPX5.0用SetupFactory打包完全教程

MAPX5.0用SetupFactory打包完全教程

由于前些日子有些朋友对MAPX打包有点问题,所以今天做个打包的教程,希望对大家有用。其实我也是参照资源大联盟的老公的打包说明来做的,只是我用的不是InstallShield打的包,我用的是setupfactory,应该来说这个要比专业的InstallShield简单多了,好了,不多说了,接下来我就对于我的《电子地图查询系统》打个包,做个演示。说明《电子地图查询系统》是用基于MAPX5.01用VB6语言开发的系统,没有涉及到数据库。

第一步:找全所有需要打包的文件。

需要打包的文件很多,我们先建个文件夹,把所有需要打包的文件放里面,比如我建的文件夹:F:\setup。打包的文件主要有

1. MAPX文件

MAPX5.0文件夹下的所有文件(不包括data、MAPS以及程序示例的文件夹,当然也可以把MAPX5的帮助文件也删掉),最后文件如图所示:【setup,factory】

2. 程序所用到的控件和动态连接库

为了方便起见,我们在SETUP文件夹下建个SYSTEM文件夹,所有的控件和动态连接库都放这里。

由于用VB6开发,所以MSVBVM60.DLL是必不可少的。我用到的其他控件有Comdlg32.ocx、MSCOMCTL.OCX、TABCTL32.OCX。把这些都复制到SYSTEM文件夹。 可以自己检查用了什么控件,控件在什么位置(一般都在系统的SYSTEM32目录下)。如图:

3. 自己做的程序以及相关的文件

由于我做的比较简单,只有一个运行程序,关联的文件主要是地图文件,我们直接把这些文件拷贝到SETUP文件夹下。

4. 其他相关

其实只需要上面的文件就可以了,如果需要更完整的话,需要以下一些文件。

A. 字体文件(在windows\font文件夹下),建议将字体文件复制到SETUP文件夹下的FONT文件夹(当然这个文件夹自己建拉)。主要有ARIAL.TTF、MAPIS___.TTF、MAPSYM.TTF、TTMIAR__.TTF、TTMICG__.TTF、TTMIMI__.TTF、TTMIOG__.TTF、TTMIOS__.TTF、TTMIRE__.TTF、TTMITC__.TTF、TTMIWE__.TTF

B. GeoDict.DCT文件(在MAPX5.0/MAPS文件夹下)。该文件不是必须的,主要是在添加注册表项的时候用到,但这个注册表项也不是必须的。建议将该文件复制到你的程序所附带的地图文件目录下。我放在了SETUP\MAPS文件夹。

5. 我的一点点建议

做了N次的打包,给点小小的建议。建议将MAPX50.DLL和mdatasetint.tlb(都在MAPX5.0文件夹下)文件复制到SYSTEM目录。因为到后来添加注册表项的时候可能会遇到点问题,所以我们就直接把MAPX50.DLL和mdatasetint.tlb文件注册到系统的SYSTEM32目录。

最后SETUP文件夹下的所有文件以及目录如图:

第二步:开始打包了

打开SETUPFACTORY,新建一个工程。

1.常规设计,就是软件名称版本等等信息设置,最主要的是填写一下产品信息,其他的基本上不需要设置。如图

2.屏幕

这些设置是安装的时候提示的对话框,大家可以自行设置。如图:

最主要的一点,这里是最关键的,主要是完成MAPX的注册和注册表的修改。如图

前面两个是添加打开\关闭程序中的执行文件,第一个是注册MAPX50.DLL,必须使用用regsvr32.exe注册,第二个是注册mdatasetint.tlb,必须用regtyplib.exe注册。下面五个是修改注册表,必须修改的要和你自己的一样,可以对照着自己的注册表更改,位置为:HKEY_LOCAL_MACHINE\Software\MapInfo\MapX\5.0。五个注册表修改项主键均为HKEY_LOCAL_MACHINE,子键均为Software\MapInfo\MapX\5.0,值名称和值类型分别为: CommonDLLDir:%AppDir%\mapx5, GeoDictionary:%AppDir%\Maps\GeoDict.DCT, ProgramDir:%AppDir%\mapx5,SearchPaths:%AppDir%\Maps,VersionCode:5.01共5个,前面的为值,后面的为值数据,值类型均为REG_SZ。

当然上面的所有操作均可以放在操作里完成。

3.添加文件

把SETUP文件夹下的所有文件拖到SETUPFACTORY

本文来源:http://www.gbppp.com/jd/449266/

推荐访问:

热门文章