一.覆盖安装
当程序第二次安装时,这是程序就覆盖安装原来的程序,还是原来的目录。
1.首先要在电脑里写入注册表,记录程序安装目录
在程序安装之后,On Preload里
设置注册表安装路径
Registry.SetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\JMElectInstallInfo", "JMElectInstallLocation", SessionVar.Expand ("%AppFolder%"), REG_SZ);
2.在启动时,检测注册表里是否存在安装路径键值
local IsJMElectInstall = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\JMElectInstallInfo");
if(IsJMElectInstall == false)then
Registry.CreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\JMElectInstallInfo"); --注册键
end
local JEtInstallLocation = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\JMElectInstallInfo", "JMElectInstallLocation",true);--获取项目安装路径
if(JEtInstallLocation ~= "")then --判断键值是否存在
local JMElectProductName = SessionVar.Expand ("%ProductName%");
Qid = Dialog.Message(JMElectProductName, String.Concat("检测到已安装该软件",",如果重装则不能改变安装目录。若要改变目录,请先卸载后再安装。确定要重 装吗?"), MB_OKCANCEL, MB_ICONQUESTION, MB_DEFBUTTON1);
if(Qid == IDCANCEL) then -- Qid为全局变量,其他窗体可用。
Application.Exit(); -- 如果不重装,则退出
else
local resultAppFolder = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\JMElectInstallInfo", "JMElectInstallLocation", true); -- 获取原来的安装目录。
SessionVar.Set("%AppFolder%", resultAppFolder); -- 将安装目录设置成原来的安装目录
end
end
3.设置某些界面自动跳转
在"开始安装"和"选择安装文件夹"On Preload里
if Qid==1 then -- 如果已有安装系统,跳过设定安装目录
Screen.Next();
end
但好像"许可协议"不能设置跳转,知道的朋友可以告诉我。
以上操作基本上设置完成了。
二.安装完成设置立即运行选项
将安装之后的界面删掉,自己做一个界面
1.添加一个检测框,只留一个复选框,其它的移除掉。编辑信息,最终如下图
2.写代码实现效果
在编辑On Next里写如下代码(JMElect.exe是你应用程序名称)
Screen.Next();
if (check01) then
Shell.Execute(SessionVar.Expand("%AppFolder%\\JMElect.exe"), "open", "", "%AppFolder%", SW_SHOWNORMAL);
end
最后发布构件即可。