Inno setup定制安装界面

Innosetup功能很强大,可以通过它提供的Wizard接口来定制界面,但我对PASCAL语言不熟悉,也不清楚通过那种接口可改动的范围有多大,最后做出来的效果是否好,所以选择了通过一个DLL来实现我的界面。
 
首先,脚本中增加如下设置,以禁至所有Inno setup自身显示的界面:
DisableDirPage=yes
DisableFinishedPage=yes
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableStartupPrompt =yes
DisableWelcomePage=yes
DisableReadyPage=yes
 
但ready to install界面还是会显示,需要去掉Ready to install界面,方法是重新编译inno setup,下载代码后使用 Delphi2009(或更新)编译unicode版本的inno setup(非unicode的需要更多delphi老版本,编译会失败),去掉wizard.pas的第2006到2009行。
将新生成的文件拷到原inno setup的安装目录。
 
  //if (PageID = wpReady) and not Visible then begin
  // Result := False;
  // Exit;
  //end;
定制安装界面的DLL需要注意的几点:
1,不能在新建的线程中创建界面,否则在任务栏会看到安装程序有两个缩略图。
2,如果要让一个函数返回后窗口不消失,只需要让窗口的消息循环函数返回即可,以后还可以重新进入循环。
 
定制界面DLL的可工作目录
定制卸载界面时发现,把DLL放到system32目录下就不能运行,在安装程序的目录下能运行。
但程序的安装目录可能会被用户修改,引用DLL中的函数时,不支持code,所以一旦用户修改程序的安装路径,就无法调用到该DLL。
将它安装到{win}目录,即可解决这些问题。
猜测:system32下的程序在64位系统上都是64位,我的DLL是32位程序,所以在system32目录就无法运行,但在其它目录是可以的。
 
原文地址:https://www.cnblogs.com/ceblog/p/4065685.html