InnoSetup安装程序动态指定安装目录

这篇博客介绍了如何利用InnoSetup的Pascal脚本和注册表读取功能,在安装程序中动态指定安装目录。作者分享了解决为程序打补丁时需要找到安装目录的问题,建议在程序中保存安装路径到注册表,并提供了通过RegQueryStringValue方法从注册表读取程序路径的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:InnoSetup安装程序动态指定安装目录_linz1980_新浪博客

InnoSetup 作为一个优秀的安装程序建造工具,拥有非常强大的功能!

由于支持 pascal 脚本,功能方面更加自由.我相信并且也看到了,有非常多的 Delphi 程序员喜欢这个工具.因为 InnoSetup 本身就是 Delphi 的作品.

由于我们小组的开发需要,今天我接触了这个工具.后来在"为安装程序动态指定安装目录"这个环节遇到了困难,但上 baidu 和 google 都找不到结果.现在我已经解决了这个问题,我很希望将该初步知识写在这里,希望能给大家提供帮助.

通常遇到这个问题的朋友们都是在为程序打补丁的时候.因此非常建议你,在你所开发的程序里都添加一个注册表信息,记录一下程序的安装目录.如果后来需要打补丁,就可以轻易的找到这个目录了.

以下就是一个通过注册表找到需补丁的目录的例子(仅仅是 [code] 部分):

[code]

procedure InitializeWizard;

var

s: string;

begin

if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Microsoft Games\Age of Empires II: The Conquerors Expansion\1.0', 'Exe Path', s) then

WizardForm.DirEdit.text := s;

end;

[code] 关键字是 innoSetup 的一个约定,也就是安装程序可自定义的代码.

InitializeWizard 方法在安装程序准备好向导之后被执行,因此可以在这里做一些初始化工作.

RegQueryStringValue 是内核支持的方法,很容易理解,就是通过注册表读取一个文本型的值.上面的例子演示了如何获取游戏"帝国时代2"的程序目录.

假如 RegQueryStringValue 返回 true 那么我们执行代码 WizardForm.DirEdit.text := s;

不必因为看到 WizardForm 的出现而感到不知所谓,WizardForm 是安装程序主窗口的指针(实例),每一个 InnoSetup 建造的安装程序都带上了这个实例,而指定安装目录的编辑框正是 WizardForm 里头的 DirEdit.(TWizardForm 在帮助文档里头有声明,然而还有更多的 TXForm)

到这来整个小结构已经很明了. InnoSetup 就是如此眷顾 Delphi 程序员的.:)

这里介绍的小知识,仅仅是 InnoSetup 的小菜一碟,它强大的功能等待你的发掘!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值