http://www.cnblogs.com/SavionZhang/p/4106338.html
Setup Factory 是一个强大的安装程序制作工具。提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选项等等。它内附的向导可以一步步的带领您做出漂亮又专业的安装程序。
本篇通过一个WinFrom项目制作安装包程序过程详细介绍其使用方法。
下面截图中使用的 SetupFactory版本为 V9.0.3. 0 汉化版。网上可以下载到很多绿色破解版。
第1步:打开软件,默认弹出“开始新的工程”窗口。
有3种方式创建新的工程:
方法1:使用工程向导,跟着向导步骤进行。此方法比较简单,推荐新手使用。
方法2:关闭默认窗口,使用左侧任务栏中的不同步骤进行操作。此方法更加灵活,建议熟悉本软件之后再使用此方法。
方法3:打开一个已有的工程,在原有基础上修改相关内容。此方法更加简单,
只需修改原有步骤或者添加新步骤及可完成。
本教程采用方法1,使用工程向导进行操作。
点击“开始新的工程”窗口中的“确定”按钮,进入下一步。
第2步:常规信息
该窗口提供了公司名称、产品名称、产品版本、公司网址等输入框,作为软件包的一部分,
在制作完成后安装的过程中界面上会显示这些信息。
点击“下一步”按钮,进入下一步。
第3步:平台
该窗口提供打包软件的运行平台32位或者64位。根据具体的需要选择。
选择后,点击“下一步”按钮,进入下一步。
第4步:源文件夹
该步骤提供选择需要打包的文件以及文件夹信息。点击“浏览”按钮,找到目标程序。
如果目标文件中包括子文件夹信息,则选中“包括子文件夹中的文件”。点击“下一步”按钮,进入下一步骤。
第5步:窗口设置
该步骤提供为安装软件的窗口设置信息。该步骤不是主要步骤,属于锦上添花的功能,随便设置一下即可。
我们就选择“向导”。点击“下一步”按钮,
“主题”窗口中,提供了主题下拉列表,每选择一种即出现预览效果界面。根据自己的喜好,选择一种。
点击“下一步”按钮,进入下一步
“多语言设置”窗口中提供安装时使用的哪种语言。一般勾选简体中文 “Chinese(Simplified)*”
与“繁体中文Chinese(Traditional)”。勾选后在下拉框中选择一种语言作为默认语言,选择简体中文作为默认语言。
点击“下一步”按钮,进入下一步。
【此步骤非常关键】
“从属”窗口中选择的技术是安装软件需要依赖且必须的基础软件。
由于我的软件运行需要在.Net4平台上,所以勾选了 .NET4。勾选后,在安装的过程中会自动安装。
有一点需要注意的是,需要在SetUpFactory软件所在的目录中新建一下目录:
Dependencies\dotnet4 。并且将 dotNetFx40_Full_x86_x64.exe放在其中。
【说明:选择依赖的技术后,需要将对应的技术文件放在SetUpFactory软件所在目录的对应子目录中】
选择完成后,点击“下一步”按钮,进入下一步。
“可选功能”窗口中提供选择项,包括卸载功能、记录日志功能、权限限制、软件安装的操作系统等选择功能。
点击“完成”按钮完成了基本的打包配置信息。
基本配置完成后,界面如下图:“存档”选项卡界面中列出了选择的打包文件。
第6步: 设置主程序文件
点击工具条中的“过滤器”按钮,会筛选出可执行文件。入下图:
选中程序运行主文件“PSSPlat.Client.WinForm.exe”,双击或者右键点击“文件属性”弹出属性对话框,如下图:
在描述文本框中输入描述性信息,也可以不输入。
在“覆盖”下拉框中选择“询问用户”。该选项的意思是在安装过程中,如果检测到系统中已经存在该文件,提示是否覆盖源文件。
如下图:在“快捷方式”选项卡几面中,位置栏中勾选
桌面:安装成功后,会在桌面上显示程序启动的快捷图标;
启动菜单:安装成功后,会设置为开机自启动;
快速启动栏:安装成功后,会出现在快速启动栏中;
开始菜单>应用程序文件夹:安装成功后,在电脑的“开始>(所有)程序>具体软件名称目录”中出现。
其他的信息可以在“高级”、“条件”、“程序包”、“注意”选项卡中做相应的配置。
第7步:设置辅助程序文件
下图中,对于辅助的.exe程序,不需要出现在开始程序菜单中,选中文件并双击,在“快捷方式”选项卡中,
取消选中“开始菜单>应用程序文件夹”
第8步:设置从属文件
在“任务”栏中,“资源模块”,点击“从属文件”菜单,弹出“资源”窗口,如下图:
点击“添加”按钮,弹出“初始文件属性”窗口,点击“浏览”按钮选择目标文件,这里选择了MySQL数据库对.Net的程序驱动“mysql-connector-net-6.9.4”。
并且勾选“当安装程序退出时删除”。点击“确定”按钮完成操作。
第9步:程序控制安装“从属文件” 【此步骤很重要】
由于选择了“从属文件”,所以在安装软件之前就需要先安装从属文件。需要弹出“从属文件”安装界面。
在“任务”栏中,“屏幕”模块,点击“安装之前”菜单,弹出“Screens”窗口,默认切换到“安装之前”选项卡。
选中“Read to Install”,点击“编辑”按钮,弹出“Screens Properties”屏幕属性窗口。
在“操作”选项卡中,输入脚本语言:
Shell.Execute(_TempLaunchFolder.."\\mysql-connector-net-6.9.4.msi","open","","",SW_SHOWNORMAL,true)
具体的API定义参考《安装包制作工具 SetupFactory API清单》
点击“确定”按钮完成配置,在安装的过程中就会弹出该辅助程序安装界面。
第10步:设置安装序列号
在“任务”栏中,“屏幕”模块,点击“安装之前”菜单,弹出“Screens”屏幕窗口,
点击“添加”按钮,弹出“屏幕图库”窗口,选择“Verify Serial Number”项,右侧预览区显示了序列号的预览界面。
点击“确定”按钮,将“Verify Serial Number”项加入到了屏幕列表中。
选中“Verify Serial Number”项,点击“编辑”按钮。弹出“序列号列表属性”窗口
在“序列号列表属性”窗口中可以修改列表名(也可以不修改)、构建配置,选中“Default”选项。
在右侧“命令”下拉框中选中“生成”项
或者点击“列表中的序列号”空白处,右键点击,同样弹出命令选项,选中“生成”项,弹出“生成序列号”窗口。
输入“要生成的序列号数量”,选择“生成随机的序列号”与序列号的掩码格式。如下图:
点击“确定”按钮。生成结果如下图。
在安装过程中输入的序列号必须是列表中的序列号才能通过验证,否则提示验证码错误。
第11步:设置安装序列号格式
在“任务”栏中,“屏幕”模块,点击“安装之前”菜单,弹出“Screens”屏幕窗口,
选中“Verify Serial Number”项,点击“编辑”按钮。弹出“Screens Properties”窗口:
在红色框内输入相关描述信息,在安装过程中就会出现该内容。
点击“添加”按钮,弹出“编辑字段属性”窗口。
在“编辑字段属性”窗口中,在标签框内输入自定义内容“序列号:”。
右侧输入风格选择“输入掩码”,格式设置为“####-####-####-####”。此格式与生产的验证码格式一致。
点击“确定”按钮,完成序列号设置。
第12步:设置安装包“到期”属性
在“任务”栏中,“设置”模块,点击“序列号”菜单,弹出“Security”窗口,切换到“到期”选项卡。
可以根据需要设置相关属性。此教程中设置如下属性:
设置完成后,点击”确定“按钮。
第13步:构建,生产安装包
以上步骤设置完成后,可以开始生产安装包。
点击”工具栏“中的”构建“按钮,弹出”发布向导 - 选择分发媒体“窗口。
由于是WinForm客户端程序,所以可以选择将安装包放在CD、DVD、自定义本地文件系统中。
这里选择了自定义(存储在本地文件系统中),文件大小设置为200M。根据安装包文件的大小,设置合适的大小。
点击”下一步“按钮,进入下一步。
在”发布向导 - 选择输出位置“窗口中,选择文件存储位置,以及安装文件名。
点击”下一步“按钮,进入下一步。
在”发布工程 - 构建安装“窗口中,开始制作安装包。
根据安装文件的大小,制作过程所需时间不同。
制作完成。
点击”完成“按钮,默认打开输出文件夹,看到如下文件”setup.exe“.
双击”setup.exe“文件,进行安装。
由于在”到期“属性中设置了”同一系统只能安装3次“的限制,所以弹出如下提示窗口。
点击”确定“按钮,弹出安装界面:
点击”下一步“按钮
选择”我同意该许可协议的条款“,点击”下一步“按钮
可以修改名称与公司信息,点击”下一步“
可以更改默认安装路径,点击”下一步“按钮
选择”使快捷方式对所有用户都可用“,点击”下一步“按钮
弹出辅助软件安装界面。(是由于在安装之前,设置了程序控制,所以出现此界面)
如果本地已经安装了,则可以选择不安装。
红色框内的显示内容是在设置时自定义的内容与格式:
如果随意输入16位序列号,点击”下一步“按钮会验证序列号是否是程序中默认生成的序列号。
如果不是,则提示错误信息:序列号无效。
正确的序列号如下:由软件随机生成的。输入其中之一即可通过验证。
安装成功
点击”完成“按钮,桌面上会有程序的快捷方式,双击即可运行软件。
如果连续多次安装该软件包,多次之后会出现如下提示:
是由于在”到期“属性中设置了限制。
et程序制作安装包,打包.net framework ,在没有安装.net2.0机器上检测安装。试用过很多打包软件,只有这款Setup Factory比较合心意,使用又简单。
软件名称:Setup Factory
所用版本:7.0.1
【软件介绍】
Setup Factory 是一个强大的安装程序制作工具。提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选项等等。它内附的向导可以一步步的带领您做出漂亮又专业的安装程序。
1.首先找到Setup Factory安装目录下的Dependencies目录,在目录中新建一个dotnet2_0.xml的文件
2.然后,在Dependencies目录下新建子目录,取名dotnet2_0,将.NET FRAMEWORK安装程序dotnetfx.exe拷至该子目录下,dotnetfx.exe可在VS 2005的安装目录下的SDK\v2.0\BootStrapper\Packages\dotnetfx目录下找到。
3.完成之后打开Setup Factory,选择:资源---从属---添加,可以看到.NET FRAMEWORK 2.0了。
附dotnet2_0.xml:
<DependencyTemplate>
<Dependency>
<Name>Microsoft .NET Framework 2.0</Name>
<RuntimeTempFolder>dotnet2_0</RuntimeTempFolder>
<RevisionDate>Friday, March 30, 2007</RevisionDate>
<Description>安装 Microsoft .NET Framework 2.0应用程序所需的运行时文件。</Description>
<DetectScript>
function isDotNet_Installed()
--author:zhengxinhe www.admans.net
-- Output to the log that the .NET detection has started.
SetupData.WriteToLogFile("Success\\t.NET 2.0 Module: Detection script started.\\r\\n", true);
-- Get the operating system name.
--Check to see if the registry key exists
DotNet_Registry = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\\\Microsoft\\\\.NETFramework");
if (DotNet_Registry == nil) then
-- The registry key does not exist
-- Run the .NET Installation script
-- Output to the log file that .NET could not be found, so it will be installed.
SetupData.WriteToLogFile("Info\\t.NET 2.0 Module: No version of .NET 2.0 files was found. .NET 2.0 will be installed.\\r\\n", true);
return false;
end
-- The key does exist
-- Get the .NET install location from the registry
DotNet_Install_Location = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software\\\\Microsoft\\\\.NETFramework", "InstallRoot", true);
-- Look for the file mscorcfg.dll
Does_File_Exist = DotNet_Install_Location.."\\\\v2.0.50727\\\\aspnet_rc.dll";
if(not File.DoesExist(Does_File_Exist))then
-- The file does not exist
-- Run the .NET Installation script
-- Output to the log file that .NET could not be found, so it will be installed.
SetupData.WriteToLogFile("Info\\t.NET 2.0 Module: No version of .NET 2.0 file was found. .NET 2.0 will be installed.\\r\\n", true);
return false;
end
-- The file does exist
-- Get the version of mscorcfg.dll
msc_ver = File.GetVersionInfo(Does_File_Exist);
if(not msc_ver)then
SetupData.WriteToLogFile("Info\\t.NET 2.0 Module: no version was found. .NET 2.0 will be installed.\\r\\n", true);
return false;
end
-- Compare the returned value against the needed value
Compare = String.CompareFileVersions(msc_ver.FileVersion, "2.0.50727.42");
if (Compare == -1) then
-- Output to the log file that a lesser version of .NET was found on the system
SetupData.WriteToLogFile("Info\\t.NET 2.0 Module: A lesser version of .NET 2.0("..msc_ver.FileVersion..") was found on the users system.\\r\\n", true);
return false;
else
-- a version less than version 2.0 is installed
-- Output to the log file that a lesser version of .NET was found on the system
SetupData.WriteToLogFile("Info\\t.NET 2.0 Module: A new or this version of .NET 2.0 was found on the users system.\\r\\n", true);
return true;
end
end
</DetectScript>
<DetectFunction>isDotNet_Installed</DetectFunction>
<InstallScript>
-- 用在安装操作中的变量:
local strMessage = [[安装程序检测到你的系统没有安装Microsoft .NET Framework2.0或者版本过旧。请点击“确定”进行安装,点击“取消”中止安装。]];
local strDialogTitle = "必需的技术文件";
local bShowUserPrompt = true; -- 设置为 true 来询问用户是否安装模块
local bRunInstallFile = true; -- 设置默认选择 (是否默认运行安装)
local strRuntimeSupportFolder = SessionVar.Expand("%TempLaunchFolder%\\\\dotnet2_0");
local strFileToRun = strRuntimeSupportFolder.."\\\\dotnetfx.exe";
-----------------------------------------------------------------------------------------
-- 安装已启动。
SetupData.WriteToLogFile("成功\\tdotnet2_0 模块:安装脚本已启动。\\r\\n", true);
-- 删除临时文件和运行时支持文件夹 (同时进行错误检查)
local function PerformCleanUp()
File.Delete(strFileToRun);
error = Application.GetLastError();
if error ~= 0 then
SetupData.WriteToLogFile("错误\\tdotnet2_0 模块:无法删除临时文件 (".._tblErrorMessages[error]..")\\r\\n", true);
end
Folder.Delete(strRuntimeSupportFolder);
error = Application.GetLastError();
if error ~= 0 then
SetupData.WriteToLogFile("错误\\tdotnet2_0模块:无法删除临时文件夹 (".._tblErrorMessages[error]..")\\r\\n", true);
end
end
-- 是否显示对话框来询问用户是否安装模块。
if(bShowUserPrompt)then
local nDialogResult = Dialog.Message(strDialogTitle,strMessage,MB_OKCANCEL,MB_ICONEXCLAMATION);
if(nDialogResult == IDOK)then
-- 用户选择安装模块。
bRunInstallFile = true;
-- 用户要安装它
SetupData.WriteToLogFile("成功\\tdotnet2_0 模块:用户已确认,准备安装。\\r\\n", true);
else
-- 用户不安装模块。
bRunInstallFile = false;
-- 用户回答否
SetupData.WriteToLogFile("成功\\tdotnet2_0 模块:用户不安装模块。\\r\\n", true);
end
end
-- 检查用户是否要安装运行时。
if(bRunInstallFile)then
-- 开始!
SetupData.WriteToLogFile("成功\\tdotnet2_0模块:正在运行dotnet2_0 安装程序。\\r\\n", true);
-- “/R:N”命令行参数告诉 VB 安装程序若需要的话不要显示重启屏幕。
-- 我们将检测整个安装进程返回代码,若需要的话,还设置内部 _NeedsReboot 变量。
-- 【注意】在静默方式下,你不能添加命令行参数“/Q”来运行安装
local nResult = File.Run(strFileToRun,"/R:N","",SW_SHOWNORMAL,true);
if(nResult == 3010)then
-- VB 安装指明它需要重启才能完成
-- 设置 Setup Factory 的重启变量,以便在安装结束时重启
_NeedsReboot = true;
-- 需要重启
SetupData.WriteToLogFile("成功\\tdotnet2_0 模块:dotnet2_0 安装程序已告知它需要重启。\\r\\n", true);
end
-- 删除运行时安装程序文件,并删除临时文件夹
PerformCleanUp();
-- 全部完成!
SetupData.WriteToLogFile("成功\\tdotnet2_0模块:dotnet2_0运行时安装完毕。\\r\\n", true);
else
-- 用户不想安装运行时,那么删除运行时安装程序文件,
-- 并删除临时文件夹,然后退出安装程序。
PerformCleanUp();
-- 全部完成!
SetupData.WriteToLogFile("成功\\tdotnet2_0 模块:dotnet2_0 运行时未安装。\\r\\n", true);
Application.Exit();
end
</InstallScript>
<SupportFiles>
<File>#SUFDIR#\\Dependencies\\dotnet2_0\\dotnetfx.exe</File>
</SupportFiles>
</Dependency>
</DependencyTemplate>
操作注册表
在定制安装界面中,可以添加一个界面,选择界面类型,并且能够自定义界面上的操作事件,比如在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。在7.0版本中,Setup Factory的默认从属资源中仅支持VB5.0及VB6.0,想要在生成的安装程序中自动完成.NET FRAMEWORK的安装,从网上查了一下,须要按以下步骤做几件事:
首先找到Setup Factory安装目录下的Dependencies目录,在目录中新建一个dotnet2_0.xml的文件。
然后,在Dependencies目录下新建子目录,取名dotnet2_0,将.NET FRAMEWORK安装程序dotnetfx.exe拷至该子目录下,dotnetfx.exe可在VS 2005的安装目录下的SDK\\v2.0\\BootStrapper\\Packages\\dotnetfx目录下找到。
完成之后打开Setup Factory,选择:资源---从属---添加,可以看到.NET FRAMEWORK 2.0了。
文件dotnet2_0.xml内容如下:
<DependencyTemplate>
<Dependency>
<Name>Microsoft .NET Framework 2.0</Name>
<RuntimeTempFolder>dotnet2_0</RuntimeTempFolder>
<RevisionDate>Friday, March 30, 2007</RevisionDate>
<Description>安装 Microsoft .NET Framework 2.0应用程序所需的运行时文件。</Description>
<DetectScript>
function isDotNet_Installed()
--author:zhengxinhe www.admans.net
-- Output to the log that the .NET detection has started.
SetupData.WriteToLogFile("Success\t.NET 2.0 Module: Detection script started.\r\n", true);
-- Get the operating system name.
--Check to see if the registry key exists
DotNet_Registry = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\.NETFramework");
if (DotNet_Registry == nil) then
-- The registry key does not exist
-- Run the .NET Installation script
-- Output to the log file that .NET could not be found, so it will be installed.
SetupData.WriteToLogFile("Info\t.NET 2.0 Module: No version of .NET 2.0 files was found. .NET 2.0 will be installed.\r\n", true);
return false;
end
-- The key does exist
-- Get the .NET install location from the registry
DotNet_Install_Location = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\.NETFramework", "InstallRoot", true);
-- Look for the file mscorcfg.dll
Does_File_Exist = DotNet_Install_Location.."\\v2.0.50727\\aspnet_rc.dll";
if(not File.DoesExist(Does_File_Exist))then
-- The file does not exist
-- Run the .NET Installation script
-- Output to the log file that .NET could not be found, so it will be installed.
SetupData.WriteToLogFile("Info\t.NET 2.0 Module: No version of .NET 2.0 file was found. .NET 2.0 will be installed.\r\n", true);
return false;
end
-- The file does exist
-- Get the version of mscorcfg.dll
msc_ver = File.GetVersionInfo(Does_File_Exist);
if(not msc_ver)then
SetupData.WriteToLogFile("Info\t.NET 2.0 Module: no version was found. .NET 2.0 will be installed.\r\n", true);
return false;
end
-- Compare the returned value against the needed value
Compare = String.CompareFileVersions(msc_ver.FileVersion, "2.0.50727.42");
if (Compare == -1) then
-- Output to the log file that a lesser version of .NET was found on the system
SetupData.WriteToLogFile("Info\t.NET 2.0 Module: A lesser version of .NET 2.0("..msc_ver.FileVersion..") was found on the users system.\r\n", true);
return false;
else
-- a version less than version 2.0 is installed
-- Output to the log file that a lesser version of .NET was found on the system
SetupData.WriteToLogFile("Info\t.NET 2.0 Module: A new or this version of .NET 2.0 was found on the users system.\r\n", true);
return true;
end
end
</DetectScript>
<DetectFunction>isDotNet_Installed</DetectFunction>
<InstallScript>
-- 用在安装操作中的变量:
local strMessage = [[安装程序检测到你的系统没有安装Microsoft .NET Framework2.0或者版本过旧。请点击“确定”进行安装,点击“取消”中止安装。]];
local strDialogTitle = "必需的技术文件";
local bShowUserPrompt = true; -- 设置为 true 来询问用户是否安装模块
local bRunInstallFile = true; -- 设置默认选择 (是否默认运行安装)
local strRuntimeSupportFolder = SessionVar.Expand("%TempLaunchFolder%\\dotnet2_0");
local strFileToRun = strRuntimeSupportFolder.."\\dotnetfx.exe";
-----------------------------------------------------------------------------------------
-- 安装已启动。
SetupData.WriteToLogFile("成功\tdotnet2_0 模块:安装脚本已启动。\r\n", true);
-- 删除临时文件和运行时支持文件夹 (同时进行错误检查)
local function PerformCleanUp()
File.Delete(strFileToRun);
error = Application.GetLastError();
if error ~= 0 then
SetupData.WriteToLogFile("错误\tdotnet2_0 模块:无法删除临时文件 (".._tblErrorMessages[error]..")\r\n", true);
end
Folder.Delete(strRuntimeSupportFolder);
error = Application.GetLastError();
if error ~= 0 then
SetupData.WriteToLogFile("错误\tdotnet2_0模块:无法删除临时文件夹 (".._tblErrorMessages[error]..")\r\n", true);
end
end
-- 是否显示对话框来询问用户是否安装模块。
if(bShowUserPrompt)then
local nDialogResult = Dialog.Message(strDialogTitle,strMessage,MB_OKCANCEL,MB_ICONEXCLAMATION);
if(nDialogResult == IDOK)then
-- 用户选择安装模块。
bRunInstallFile = true;
-- 用户要安装它
SetupData.WriteToLogFile("成功\tdotnet2_0 模块:用户已确认,准备安装。\r\n", true);
else
-- 用户不安装模块。
bRunInstallFile = false;
-- 用户回答否
SetupData.WriteToLogFile("成功\tdotnet2_0 模块:用户不安装模块。\r\n", true);
end
end
-- 检查用户是否要安装运行时。
if(bRunInstallFile)then
-- 开始!
SetupData.WriteToLogFile("成功\tdotnet2_0模块:正在运行dotnet2_0 安装程序。\r\n", true);
-- “/R:N”命令行参数告诉 VB 安装程序若需要的话不要显示重启屏幕。
-- 我们将检测整个安装进程返回代码,若需要的话,还设置内部 _NeedsReboot 变量。
-- 【注意】在静默方式下,你不能添加命令行参数“/Q”来运行安装
local nResult = File.Run(strFileToRun,"/R:N","",SW_SHOWNORMAL,true);
if(nResult == 3010)then
-- VB 安装指明它需要重启才能完成
-- 设置 Setup Factory 的重启变量,以便在安装结束时重启
_NeedsReboot = true;
-- 需要重启
SetupData.WriteToLogFile("成功\tdotnet2_0 模块:dotnet2_0 安装程序已告知它需要重启。\r\n", true);
end
-- 删除运行时安装程序文件,并删除临时文件夹
PerformCleanUp();
-- 全部完成!
SetupData.WriteToLogFile("成功\tdotnet2_0模块:dotnet2_0运行时安装完毕。\r\n", true);
else
-- 用户不想安装运行时,那么删除运行时安装程序文件,
-- 并删除临时文件夹,然后退出安装程序。
PerformCleanUp();
-- 全部完成!
SetupData.WriteToLogFile("成功\tdotnet2_0 模块:dotnet2_0 运行时未安装。\r\n", true);
Application.Exit();
end
</InstallScript>
<SupportFiles>
<File>#SUFDIR#\Dependencies\dotnet2_0\dotnetfx.exe</File>
</SupportFiles>
</Dependency>
</DependencyTemplate>
关注.NET开发技术,网站开发,应用系统开发http://www.hnhqwl.com