|
目前要制作一个安装软件,使用Inno Setup V5.23版本,需要实现3个另类的功能:
1、允许用户自己输入一个软件名称(这样不是由开发者来决定了),安装时要自动将软件安装到相应的文件夹里,比如用户在一个框里输入“我的定制软件”,安装包就将软件安装到“C:\Program Files\我的定制软件”这个文件夹里面,如果输入“这软件只有我一个人使用”,那么安装路径就变成“C:\Program Files\这软件只有我一个人使用”这个文件夹里。
2、允许用户改动可执行文件的名称,比如发行时可执行文件是“aaa.exe”,用户可以在安装时的一个输入框里输入自己想要的名字,比如“zzz”,安装后文件就改名成为zzz.exe。
3、开始菜单和桌面的快捷方式,因为上述2项的改动,快捷方式也要有相应的变化,否则会指向不正确。
目前在实现第一个功能时就碰到了问题,我在setup段里这样设置:
[Setup]
DefaultDirName={pf}\{code:GetMyAppNameIn}
code段这样设置
[Code]
var
MyAppNamePage: TInputQueryWizardPage;
MyAppNameIn: String;
procedure InitializeWizard();
begin
MyAppNamePage := CreateInputQueryPage(wpLicense,
'定制软件名称', '设置自己的特定名称',
'请输入自己设定的软件名称,随便取什么名字,多有特色都可以');
MyAppNamePage.Add('软件名称:', False);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = MyAppNamePage.ID then begin
MyAppNameIn := MyAppNamePage.Values[0];
end;
Result := True;
end;
function GetMyAppNameIn(Param: String): String;
begin
Result := MyAppNameIn;
end;
结果发现无效,检查时在NextButtonClick里加上MsgBox函数来检测MyAppNameIn变量,发现确实已经改成了用户输入的名称了,但是在接下来的让用户选择安装路径的框上,却显示路径为“C:\Program Files”,没有用户输入的部分,表明MyAppNameIn没有提取到。我猜测是不是DefaultDirName的生效时间在NextButtonClick函数之前,导致安装包一运行,就先将DefaultDirName赋值好了,用户输入的时候已经太晚了,不知道是不是这样。
这种情况不知道诸位用Inno时有没有碰到,希望能帮我想个办法,谢谢! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|