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 就会内置在你的项目安装文件里了 ...