使用Setup Factory 制作安装包的一般过程

来源:互联网 发布:希拉里 国务卿知乎 编辑:程序博客网 时间:2024/04/27 01:51

安装包是用户接触到工程的第一步,所以安装包的制作非常重要。下面记录一下使用Setup Factory制作安装包的过程。

建立工程

打开setupFactory,按照提示一步步往下走即可。
1
填写信息
在下图中的位置添加需要的项目。
添加项目
在下图中的位置可以添加安装时的语言。
选择语言
完成后进入主界面
主界面
下面我们需要将项目中的exe文件在桌面建立快捷方式。右键exe文件(图中的CTest.exe),选择文件属性—>快捷方式。
快捷方式
主界面左侧的“会话变量”可以查看或修改安装过程中所需要的变量;“屏幕”选项卡中可以对安装的全过程一一修改;同理,“卸载”选项卡中的选项可以对卸载的全过程一一修改。

检测软件是否安装

在安装前,一般需要检测用户是否已经安装过此软件,并采取相对的措施。我们采用安装完成后修改注册表,启动安装时检查注册表的方法。
1.安装完成后修改注册表信息。
在主界面中选择屏幕->安装之后,进去后点击“Finished Install”,再点击编辑,找到“操作”选项卡中的“On preload”,在这里可以用代码完成此项功能。
为了方便起见,在会话变量中将项目名称尽量改为英文。代码实现过程如下。
Tip:若不知道函数需要的参数,可以鼠标双击函数,按提示填写参数。

softname=SessionVar.Expand("%ProductName%");Reg_soft="Software\\\\zhizhu\\\\"..softname;--先在HKEY_LOCAL_MACHINE中的Software中建立一个表项“zhizhu”result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\zhizhu");if (result) thenelseRegistry.CreateKey(HKEY_LOCAL_MACHINE, "Software\\zhizhu");end--创建本程序注册表项,记录安装路径和卸载路径Appfile=SessionVar.Expand("%AppFolder%");Registry.CreateKey(HKEY_LOCAL_MACHINE, Reg_soft);Registry.SetValue(HKEY_LOCAL_MACHINE, Reg_soft, "InstallPath", Appfile,1);Uninfile=SessionVar.Expand("%AppFolder%\\Uninstall\\uninstall.exe \"/U:%AppFolder%\\Uninstall\\uninstall.xml\"");Registry.SetValue(HKEY_LOCAL_MACHINE, Reg_soft, "Uninstaller",Uninfile, 1);

然后要做的就是在启动安装时检测注册表中的信息,若发现注册表中有记录,则提示用户是否需要删除。卸载软件时先获取注册表中存的卸载文件地址,然后运行它。
启动安装

softname=SessionVar.Expand("%ProductName%")Reg_soft="Software\\\\zhizhu\\\\"..softnameresult = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE,Reg_soft)if (result) then    msgBTN = Dialog.Message(softname,'提示:此机已安装本软件,是否重新安装?\r\n\r\n ',MB_YESNO,MB_ICONINFORMATION,MB_DEFBUTTON1)    if (msgBTN == IDYES) then        result = Registry.GetValue(HKEY_LOCAL_MACHINE,Reg_soft,"Uninstaller",true);        File.Run(result,"","",SW_SHOWNORMAL,true);        result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE,Reg_soft);        if (result) then        msgBTN2=Dialog.Message(softname,'卸载未完成!是否继续安装?\r\n\r\n 点击“是”继续安装;点击“否”,退出安装。',MB_YESNO,MB_ICONINFORMATION,MB_DEFBUTTON1);            if (msgBTN2==IDYES) then            elseif (msgBTN2==IDNO) then                Application.Exit();            end        end    elseif(msgBTN==IDNO) then        Application.Exit();    endelseend
0 0
原创粉丝点击