问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

Setup Factory 9 + net framework 2.0 打包的方法怎么解决

发布网友 发布时间:2022-04-12 09:56

我来回答

2个回答

热心网友 时间:2022-04-12 11:25

Net程序制作安装包,打包.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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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 Mole: 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>
Setup Factory 9 + net framework 2.0 打包的方法怎么解决

然后,在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...

我用Setupfactory给C#的程序打包,不知道怎么弄...

需要用到的文件 全都 按照你程序读取的格式放好 然后一键打包 .net framework 设置命令静默安装 感觉NSIS 这个打包软件好一点 用命令批量处理

安装.net.2.0的问题

回答:查看文章 安装.NET Framework 2.0碰到的问题 2009年02月06日 星期五 上午 11:36 今天安装完Microsoft .NET Framework 2.0 (x86) 多国语言版之后想测试一下网站,谁知道在浏览的时候出现了这样的文字,Server Application Unavailable The web application you are attempting to access on this web ...

setup factory 怎么将多个运行程序打包成一个exe

我以前用的是 Inno Setup 来做的安装包 里面是这样判断的//判断是否安装.net 框架2.0 if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.0') then具体代码 参考: Inno Setup 制作安装程序脚本使用教程及软件下载 ...

C#程序打包如何自动安装.net framework 2.0

第一步:安装一边的程序,他会提示你安装.net Framework 第二步:等程序安装玩后,在控制面板的添加删除程序里你可以看到 .net Framework 和你的安装程序。这时候你可以把你的安装程序 卸 载 掉 第三步:再次安装你的程序,你会发现他并没有提示你要你安装 .net Framework ,而是直接安装你...

...scr.exe, 如何生成一个安装程序,将scr.exe安装到没有framework...

现在网上有很多打包工具,对你做成的exe文件进行打包,在打包的时候你也可以吧framework打包进去,选择在安装程序时把framework也安装上去。你可以下载个用用。我用的就是“setupfactory”打包工具。你在网上也下载个“dotnetfx.exe”这是framework平台。打包时把你的exe和dotnetfx.exe一起打包就行了。

...7.0打包软件,怎样检测用户是否安装.netframework 如果安装了就跳过...

建议用Setup Factory 7.0,如下操作 1、在“资源”的“原始文件”中添加net Framework 2.0(例如dotnetfx2.0.exe)2、再在“操作”的“启动”中增加如下代码:result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\policy\\v2.0");if (result == false) ...

VC++的InstallShield如何用?

请注意,.NET Framework 2.0 包还将安装 Windows Installer 2.0 文件。如果按照如下所示设置了系统必备属性,则单击 setup.exe 后,会在运行 .msi 文件前自动安装 .NET Framework(这是默认设置)。有关指定系统必备组件的更多信息,请参见“系统必备”对话框。设置部署项目的可选属性在“解决方案资源管理器”中选择“...

用setup factory打包C#开发的安装程序,运行时出现应用程序正常初始化...

如果没有安装C#开发环境的话是不能打开C#编写的应用程序的

怎么在安装程序中集成打包安装.net

在项目上右键点“属性”,进入项目属性界面,选择左侧的“发布”,点击右侧的“系统必备”,进入系统必备窗口,选择“从与我的应用程序相同的位置下载系统必备组件”,点击确定,保存退出属性设置界面,然后在项目上右键点“发布”,然后.net framework 就会内置在你的项目安装文件里了 ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
竹笋和木耳能一起炒吗 北京健康宝的边框每天真的在变颜色吗? 太原小学好学校有哪些 太原的小学有哪些 ABS胶水使用方法及注意事项 阴部能艾灸吗 艾灸治妇科吗 艾灸对妇科炎症有用吗 鲜辣笋干木耳爆鸡块制作步骤 想送一个喜欢的女孩子25岁生日礼物,大家都有什么好创意? 请问有谁知道喷墨绘图仪的原理 绘图仪写真机和写真机有什么区别啊? 显卡,显示器,打印机,绘图仪的类型有哪些?他们的动作原理,主要技术指标和日常维护有哪些? 丰顺四色麻将手机怎样下载 从潮州怎样去丰顺硫磺温泉 潮汕高铁站到丰顺汤坑怎么坐车回去打的又要多少钱 diy绘图仪原理? 丰顺潘田四色牌怎么玩 请问各问朋友.西门子冰箱冷冻室漏水是怎么了 西门子冰箱怎么漏水 我家西门子冰箱的冷藏室里怎么渗水,冷藏室底部有小水珠似的,请问是什 ... 情侣高清头像 求一组高清情侣头像 求情侣头像 要高清的 越多越好 谢谢 求高清情侣头像 哪位大神有这张图片的另一半的情头,要高清的? 怎样去除EXCEL中的重复行 VB.NET 2008 怎么给软件打包?能不能做成一个exe文件? 电脑在开机时提示缺少文件WINDOWS不能启动咋办? 华为p9plus应用图标角标怎么开启 光大银行信用卡的临时额度上信报吗 在WORD中半字线是哪个符号? 怎么把电脑音箱换成耳机啊? “-”这个符号怎么在文档里打出来,不是在下面的,也不要短的 英文中,半字线两端要加空格吗? 怎么把电脑音响换成耳机的?最好留个Q 交我 一字线在word怎么输入 光大信用卡征信显示额度包括临时额度吗 一字线怎么输入 我要把音响换成耳机,要在电脑上怎么弄?具体点。 现在2012年新改版的公文格式页码如何添加,左右一字线怎么打,麻烦哪位高手帮帮我, 洗鞋机刚买回家搞不懂? 页码用4号半角白正体阿拉伯数字,置于版心下边缘之下一行,左右各放一条4号一字线怎么设置 洗头水能洗脸吗 洗了脸之后会怎样? 如何彻底改善油性发质和油性皮肤 如何查看net framework版本 电动车电机拆开后重新安装有影响吗 谁有prcs6下载地址?谢谢各位啦! 电动车电机拆卸什么方法,里面强磁吸力很大啊,只能周边翘个小口啊是不是方法不对啊? 断桥铝门窗105是什么意思
  • 焦点

最新推荐

猜你喜欢

热门推荐