Setup Factory覆盖安装并且安装完成之后设置立即运行选项

一.覆盖安装

    当程序第二次安装时,这是程序就覆盖安装原来的程序,还是原来的目录。

    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

 最后发布构件即可。


猜你喜欢

转载自blog.csdn.net/jx_521/article/details/12510225
今日推荐