您的位置:首页 > 其它

使用Setup Factory打包基于.Net的WinForm程序

2009-10-17 10:41 609 查看
http://hi.baidu.com/tenvi009/blog/item/4be8ca356c1586325ab5f538.html

 

制作安装程序,无非是复制文件、注册控件、注册服务、修改设置项(注册表、配置文件)等等。通过一些专门的安装制作软件不难做出一个专业的安装程序。

.net下的WinForm程序,制作安装包需要做些什么呢?
典型情况下可能需要做如下事情:

1、判断客户机是否安装了.net framework

2、复制程序文件

3、将某些控件加入到全局应用程序缓存(GAC),比如第三方的控件或是自己定义的具有强名称的控件

4、安装时的默认设置项,比如程序的配置文件、或修改注册表等

5、创建快捷方式、软件的卸载

制作安装程序的工具比较多,常见的比如InstallShield、Wise Install、以及VS本身自带安装程序制作功能,前2个都是专业级的安装制作工具,所以安装文件也是巨大。这里我们推荐一款制作安装程序的软件 Setup factory7.0,使用这个软件能够轻松的制作出一个专业的安装程序,它内置一种跟VBS类似的脚本语言,通过编写action脚本,能够实现比较强大的一些,比如从网上下载一些需要的安装文件。

对于Setup factory7.0的一般性使用这里就不详细介绍了,自己稍微摸索一下就知道了。我只介绍一下关于如何判断是否安装了.net framework及自动下载框架的安装文件并安装、如何修改注册表项、自定义安装界面等。

1、如何判断是否安装了.net framework

这里是判断注册表中是否存在框架的注册项。需要在Setup factory中的工程-操作的OnStartup事件中写如下代码:

-判断是否安装了.net框架
hasInstalled = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software//Microsoft//.NETFramework");
if hasInstalled == false then
result = Dialog.Message("安装提示", "运行本软件需要安装.Net框架1.1版,是否从网络中下载并安装?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1)
if result == IDYES then
   isExists = HTTP.TestConnection("http://www.zhangyongjun.com/fdown/uploadfile/dotnetfx.exe", 90, 80);
   if isExists == true then
-- Show the StatusDlg
StatusDlg.Show(MB_ICONINFORMATION, false);
StatusDlg.ShowCancelButton(true, "取消");

-- Set statusdlg title and message
StatusDlg.SetTitle("下载所需文件 . . . ");
-- Set meter range (max range = 65534)
StatusDlg.SetMeterRange(0, 100);  
-- Download a file from the internet to the user's computer
-- Uses DownloadCallback() as the callback function
HTTP.Download("http://www.zhangyongjun.com/fdown/uploadfile/dotnetfx.exe", SessionVar.Expand("%TempFolder%//dotnetfx.exe"), MODE_BINARY, 20, 80, nil, nil, DownloadCallback);

-- Hide the StatusDlg
StatusDlg.Hide();
Shell.Execute(SessionVar.Expand("%TempFolder%//dotnetfx.exe"), "open", "", "", SW_SHOWNORMAL)
   else
Dialog.Message("错误提示", "下载文件失败,可能服务器已停止服务。请从Microsoft网站上下载.Net Framework1.1。", MB_ICONEXCLAMATION);
Application.Exit(0);
   end
else
   Application.Exit(0);
end
end

-- Callback function for HTTP.Download
function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
-- Convert total and downloaded bytes into formatted strings
sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);
-- Output time left, formatted.
StatusDlg.SetMessage("正在下载文件 . . . 剩余时间: " .. SecondsLeftFormat);
-- Output formatted sizes to user through statusdlg status text
StatusDlg.SetStatusText("已下载: " .. sDownloaded .. " / " .. sTotal);
-- Set meter position (fraction downloaded * max meter range)
StatusDlg.SetMeterPos((nDownloaded / nTotal) * 100);
end

 
2、操作注册表

在定制安装界面中,可以添加一个界面,选择界面类型,并且能够自定义界面上的操作事件,比如在OnPreload、OnNext、OnBack、 OnCancel、OnHelp编写脚本以实现特定的功能,下面的代码是实现在自定义的配置设置界面中用户填写完配置信息后,点“下一步”时,将填写的信息写入到注册表,其中CTRL_EDIT_01等为编辑控件(这里是文本框)的ID。
 
-- 这些操作在点击“下一步”按钮时执行。
-- 提示:你可以在这里添加验证用户输入信息的操作
Registry.CreateKey(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem");
tEditFieldServer = DlgEditField.GetProperties(CTRL_EDIT_01);
tEditFieldDBUser = DlgEditField.GetProperties(CTRL_EDIT_02);
--Debug.ShowWindow( true );

Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "ServerName", tEditFieldServer.Text, REG_SZ);
Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBUser", DlgEditField.GetProperties(CTRL_EDIT_02).Text, REG_SZ);
Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBPwd", DlgEditField.GetProperties(CTRL_EDIT_03).Text, REG_SZ);
Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "DBName", DlgEditField.GetProperties(CTRL_EDIT_04).Text, REG_SZ);

Debug.Print(tEditFieldServer.Text);
test = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software//FengcheSoft//TradeSystem", "ServerName", true);
Debug.Print(test);
-- 进入下一个屏幕
Screen.Next();
Setup factory是一种比较强大而简单的安装制作软件,大家可以好好研究一下,一定能够实现你想要的功能!

Setup Factory 是一个强大的安装程序制作工具。提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选项等等。它内附的向导可以一步步的带领您做出漂亮又专业的安装程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息