Inno setup中定制安装路径

本文详细介绍了如何在自定义InnoSetup安装界面中提供更改安装路径的功能,并通过函数返回新的安装路径。同时,文章还讨论了在定制后的DLL中修改安装路径时遇到的问题以及解决方案,包括如何正确处理C语言与PASCAL String类型的差异,确保路径的正确性和稳定性。

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

我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法。
用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下:
1,写一个函数,来返回新的安装路径,如:
function MyDestDir(SubDir:String):String;
begin
  if SubDir = '' then
    Result := RootDestFolder
  else
    Result := RootDestFolder + '\'+ SubDir;
end; 
2,把原来使用{app}的地方都改成:{code:MyDestDir},安装脚本自己能够调用MyDestDir并得到正确的路径。如:
Source: "test.xml"; DestDir: {code:MyDestDir}; 
Source: "\res\ReloadHigh\*"; DestDir: {code:MyDestDir|res\ReloadHigh}
最后记得加上:UninstallFilesDir={code:MyDestDir}, 否则卸载程序会被放到{app}.
 
注意:
如果在定制后的DLL中修改安装路径,可以让inno setup把原来的路径以TCHAR*的形式传给DLL,DLL直接修改。
但因为PASCAL的String类型并非是C语言的0结尾字符串,它会记录字符串的真实长度,所以被C语言修改后的String不能直接使用。因为长度不一定相同(实际情况是如果长度没变,就是正确的,如果长度有变化,程序安装路径中的文件名就不见了,安装不了)。
所以在从DLL返回后,需要使用Length函数重新给String设置正确的长度。
 

转载于:https://www.cnblogs.com/ceblog/p/4065736.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值