Inno setup中定制安装路径

原文:Inno setup中定制安装路径

我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法。

用户修改后的路径会被传回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设置正确的长度。

时间: 2024-10-11 15:14:47

Inno setup中定制安装路径的相关文章

Inno Setup中做补丁通过注册表获取原程序安装目录

今天找VM补丁看到的,是个innosetup封装的,所以习惯性的喜欢去看人家的iss文件是怎么编写的. DefaultDirName={reg:HKLM\SOFTWARE\VMware%2c%20Inc%2E\VMware Workstation,InstallPath} 看到上面这个代码很奇怪,DefaultDirName是默认安装路径,他的路径是以reg开始的,大意是注册表的路径,后面加了个InstallPath,这样就搞定了,真简单,这个我以前是不知道,不过以后就可以用到了,哈哈. 这个包

如何使用Inno Setup Compiler制作安装软件包

工具/原料 Inno Setup Compiler汉化版软件 方法/步骤 启动Inno Setup Compiler汉化版软件.   选择创建新的空白脚本文件,按确定.   然后按下一步.   在相应的项目里填上相应的内容,按下一步.   在图中的1处以浏览的方式选择主程序,然后一个个添加目录,添加完后要记得编辑所添加的目录,以免所有文件安装在目标目录下.在图中的2处选添加目录后按编辑.   在下图中的1处填上子目录的名称,在2处下拉选择其他设置.设置之后按确定继续下一步.   按提示内容填写后

Inno Setup 检测已安装的.NET Framework 版本

翻译自:http://kynosarges.org/DotNetVersion.html 由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来确定安装在目标机器上的.NET Framework版本.幸运的是,它很容易使用 Pascal 脚本语言来实现这样的功能. 脚本 在下面的 Inno Setup的 脚本代码块,函数 IsDotNetDetected 检查指定的.NET Framework 版本和至少指定的服务包级别是否被安装了.所有列

Inno Setup命令行安装卸载参数

安装命令行参数安装程序接受可选的命令行参数.这些对于系统管理员以及其它程序调用安装程序时有用./SP- 在安装开始时禁用“这将安装... 你想继续吗?”的提示,当然,如果 [Setup] 段的指令 DisableStartupPrompt 设为 yes 时,这将无效./SILENT , /VERYSILENT 告诉安装程序后台或完全后台运行.当安装程序在后台运行时,向导和背景窗口将不显示,但安装进度窗口显示.当安装程序在完全后台安装时,这个安装进度窗口也不显示.其它的事件被象正常安装一样,例如安

Inno Setup设置在安装Finished页面,点击finish后打开网页

在安装的最后一个页面FinishPage中点击Finished然后打开一个网页 这个功能貌似很简单,不就是在点击finish按钮给它绑定事件,问题立马解决. 在普通的桌面应用程序开发中的确是这样做的,可是这里是InnoSetup 这个事件不是你能控制的, 所以我们应该换一种思维,点击finish后,相当于程序全部安装完毕了,而在InnoSetup的脚本中,我们可以获取到这个状态 先上代码: 1 //这个方法innosetup会自动调用的,当安装步骤有所改变时,它就会被触发 2 procedure

Inno Setup中多语言时,使用占位符填充

如在: [CustomMessages] CreateDesktopIcon=Create a Desktop icon NameAndVersion=%1 version %2 普通的获取CustomMessages中字段的信息,只需使用CustomMessage方法即可 var S: String; begin S := CustomMessage('CreateDesktopIcon'); end; S 的结果是: Create a Desktop icon 但NameAndVersion

一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞

转载自:http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html 对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是否安装有jre.jre版本问题.jre去哪下载.如何用jre启动你的Java应用?不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天.如果不是因为这个问题,Java在我的眼里算是最完美的语言了,也是我最喜爱的语言.

Inno Setup安装程序单例运行

1.缘起: KV项目下载底层升级包,老是报出升级文件占用问题,反复分析,不得其所. 今天突然发现同时启动多个升级程序实例,分析认为安装包同时被调用多次,导致实例访问文件冲突,导致此问题. 安装程序由Inno Setup制作,遂找其解决方案,最先想到的是互斥体,就由此开始! 2.AppMutex [Setup] AppMutex=MyAppMutex 安装程序Setup段,此互斥变量,会在安装程序启动时检测是否有此互斥体的程序在运行,若有则提示: 通常,在程序中置同名互斥体,此入判断,可避免程序在

开源Inno Setup官网下载、安装、打包教程(官网安装向导中文语言包)

安装Inno Setup篇 1.搜索Inno Setup 2.下载Inno Setup 3.选择下载最新 innosetup-5.5.9-unicode.exe 版本(innosetup-5.5.9.exe同样支持中文安装向导) 4.安装Inno Setup:选择安装语言(没有中文选项) 5.安装Inno Setup:同意协议 6.安装Inno Setup:安装路径 7.安装Inno Setup:安装Preprocessor 8.安装Inno Setup:创建桌面快捷方式 9.安装Inno Se