NET 打包入门
- 格式:doc
- 大小:27.50 KB
- 文档页数:3
⽤turbostudio打包.net应⽤程序
个⼈在⼯作中⽤到⼀些⼯具,如:Toad for SQL Server.exe、fishcodelib的⼯具Note.exe、Database4.exe等,后来知道是⽤.net编写的,想着⽤reflector查看源代码,⼀般都会对代码进⾏混淆,以防⽌别⼈偷窥,但我能⼒有限,⽆法查看这些⽂件的源代码,如图:
通过了解,这些exe⽂件⼀般⽐较⼤,是把运⾏程序时所需的所有dll⽂件打包合成的,打包后⽆法⽤反编译⼯具查看源代码,通过百度后知道是⽤turbo studio⼯具打包⽣成的,现在⽤此⼯具打包应⽤程序,如图:
1、先把应⽤程序编译好,和dll⽂件放⼀个⽂件夹下
2、打开turbo studio设置相关的参数
3、⽣成⽂件WindowsFormsApp1.exe,⼤⼩有28M,⽐打包前⼏个⽂件合计⼤⼩还⼤,放到单独的⼀个⽂件夹下运⾏
4、⽤reflector打开试试,⽆法打开
总结:此⼯具有利也有弊,好处是可把应⽤程序打包成⼀个可执⾏⽂件,做出绿⾊版本,⽅便拷贝携带,坏处是⽣成的⽂件太⼤,⽽且对应⽤程序感兴趣的⼈来说不是件好事。
一、基础打包操作1.新建打包工程文件->新建->项目,选择其他项目类型->安装项目,命名项目并选择存放目录。
一个打包工程建立好以后,点击项目上方,会看到打包工程主要操作的功能项,从左到右依次包括文件系统、注册表项、文件类型编辑、用户界面编辑、自定义操作编辑、和启动条件编辑。
其中通过文件系统操作可以设置应用程序的安装路径,用户文件夹以及桌面快捷方式等;通过修改注册表项可以定义在安装过程中,需要向注册表添加的注册表项目;通过用户界面编辑可以设置和修改各种安装过程中的操作界面,如欢迎界面以及用户自定义的操作界面等;自定义操作编辑允许通过写代码的方式,干预安装过程,可以更加灵活的在安装过程中的几个关键时刻加入自定义的操作过程(比如融入注册表检查和操作、文件读写、数据库建表等),总之通过控制代码可以进行任何可能的操作。
启动条件编辑定义了程序的整体可运行环境。
一个安装工程建立以后,可以设置相应的属性信息。
比较常用的如生产商,产品名称以及版本号等。
2.建立应用程序文件夹打开“文件系统”视图,添加文件。
应用程序文件夹:通过点击右键弹出菜单,可以添加安装目录下对应的子目录,或者向安装目录或者子目录中添加文件。
用户的程序菜单:添加应用程序安装后,windows应用程序菜单中对应的文件夹,以及文件夹中的快捷方式等。
用户桌面:添加应用程序安装后,桌面上建立的文件夹以及其中的快捷方式。
3.设置安装路径点击应用程序文件夹,查看属性面板中对应的属性,在DefaultLocation中设置默认的程序安装路径。
其中的ProctName是点击打包工程弹出的属性框中,ProductName(产品名称)设置的产品名称。
4.添加被打包的文件在建立安装文件夹中,点击右键菜单,选择添加文件,从本地选择已经生成并需要进行打包的文件,并将文件添加到安装文件夹中。
5.添加快捷方式可以点击应用程序exe文件并将快捷方式剪切到对应的“程序菜单”或“桌面”文件夹中。
打包的方案
1. 引言
在软件开发和系统部署中,打包是一项重要的工作。
打包是将程序的相关文件和资源整合到一个文件中,方便部署和分发。
本文将介绍几种常见的打包方案,以供参考和选择。
2. 手动打包
手动打包是最基本的打包方式。
通过手动将文件和资源复制到一个目录中,再压缩成一个文件,完成打包的过程。
手动打包的优点是简单易行,适用于小型项目和个人开发。
但是,手动打包容易出错,且无法自动化,对于大型项目和团队合作来说,手动打包效率低下且易出现问题。
手动打包步骤:
1.创建一个目录,用于存放打包文件和资源。
2.将需要打包的文件和资源复制到目录中。
3.使用压缩工具(如7-Zip、WinRAR等)将目录压缩成一个文件。
4.将打包文件分发给需要的人或部署到目标系统中。
3. 脚本打包
为了解决手动打包的不足,可以使用脚本来自动化打包过程。
脚本打包可以使用各种脚本语言实现,如Shell、Python、Ruby等。
脚本打包的优点是可以自动化整个打包流程,减少手动操作和人为错误。
Shell脚本打包示例:
```shell #!/bin/bash
打包文件目录
PACKAGE_DIR=。
.net framework是由微软公司开发的一个用于构建和运行应用程序的评台。
它提供了许多功能和工具,帮助开发人员快速构建稳健、可靠的应用程序,并且可以在不同的操作系统上运行。
在本文中,我们将了解.net framework的用法,包括安装、配置、开发和调试应用程序等方面的内容。
一、安装.net framework1. 确认系统要求:在安装.net framework之前,首先需要确认系统是否符合.net framework的要求。
通常情况下,Windows操作系统都是支持.net framework的,但是需要确认系统的版本是否兼容。
2. 下载.net framework安装包:可以通过微软冠方全球信息站或者其他可信赖的来源下载.net framework的安装包。
根据系统版本选择合适的安装包进行下载。
3. 安装.net framework:下载完成安装包后,双击运行安装程序,按照提示进行安装。
在安装过程中,可以选择程序集、语言包等组件进行安装,根据自己的需求选择。
二、配置.net framework1. 配置开发环境:在使用.net framework进行开发之前,需要配置开发环境。
通常情况下,可以使用Visual Studio等集成开发环境进行开发,需要安装对应的开发工具包和运行时库。
2. 配置应用程序运行环境:在部署应用程序时,需要配置应用程序运行环境。
可以使用.net framework提供的工具进行应用程序打包、发布和部署,以确保在目标系统上能够正常运行。
三、开发应用程序1. 创建项目:使用Visual Studio等开发工具,新建一个项目,选择.net framework作为目标框架。
2. 编写代码:使用C#、等编程语言编写应用程序的代码。
借助.net framework提供的类库和工具,可以快速构建应用程序的逻辑和界面。
3. 调试应用程序:在开发过程中,可以使用调试工具对应用程序进行调试,定位和修复程序中的错误和异常。
.net 预处理详解在使用.net框架进行软件开发时,我们经常会遇到需要在编译阶段对代码进行预处理的情况。
预处理是指在编译代码之前,通过指定一些预处理指令来控制代码的编译过程。
预处理指令在代码中以`#`符号开头,告诉编译器应该如何处理代码。
在本文中,我们将详细介绍.net 框架中常用的预处理指令及其用法。
1. 条件编译条件编译是预处理中最常用的功能之一,它可以根据一些条件来决定是否编译一段特定的代码。
通过使用`#if`和`#endif`指令,我们可以在代码中嵌入任意条件来控制编译过程。
例如,我们可以使用条件编译来根据不同的操作系统平台编译不同的代码片段:```csharp#if WINDOWSConsole.WriteLine("This is a Windows platform.");#elif LINUXConsole.WriteLine("This is a Linux platform.");#endif```上述代码中,`#if`指令用于判断是否为Windows平台,如果是则输出相应的信息;`#elif`指令用于判断是否为Linux平台,如果是则输出相应的信息。
通过条件编译,我们可以根据具体情况选择性地编译代码,以实现更好的跨平台兼容性。
2. 定义常量预处理指令还可以用于定义常量,在编译过程中将其替换为指定的值。
通过`#define`指令可以定义一个常量,并在代码中使用该常量。
例如:```csharp#define MAX_VALUE 100int value = MAX_VALUE;```上述代码中,我们使用`#define`指令定义了一个名为`MAX_VALUE`的常量,并将其设置为100。
之后,在代码中使用该常量时,编译器会将其替换为实际的值。
这样可以提高代码的可读性和维护性。
3. 跳过代码有时候,在调试或者测试代码时,我们需要暂时跳过一些代码片段而不编译它们。
Winform制作安装包时连同.net框架一起打包第一步:项目配置1,在属性页中单击“Prerequisites...”2,勾选“创建用于安装系统必备组件的安装程序”,选中需一起打包的框架版本,勾选“从与我的应用程序相同的位置下载系统必备组件”第二步:从网络下载框架及语言包后拷贝到本机。
(1).net框架包位置:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX452(2).net 语言包位置:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX452\zh-Hans第三步:获取框架包及语言包的公钥信息并替换到对应的product.xml文件中。
(1)获取公钥(2)替换到product.xml文件中(需删除密钥中所有空格)发布时设置为Release模式:安装包制作时遇到的问题及处理办法:打包时输出窗口出现如下提示:WARNING: The target version of the .NET Framework in the project does not match the .NET Framework launch condition version '.NET Framework 4.7.2'. Update the version of the .NET Framework launch condition to match the target version of Framework in the Advanced Compile Options Dialog Box (VB) or the Application Page (C#, F#).翻译:警告:项目中.NET Framework的目标版本与.NET Framework启动条件版本“.NET Framework 4.7.2”不匹配。
.net程序反编译教程(附反编译⼯具)
⼀、以windows服务和winform项⽬为例,此处⽤的是winform,发布后的程序都会⽣成.exe⽂件,如果有其它关联的程序集,会打包成.dll的动态库⽂件,⼀般打包后exe和dll都会带.pdb⽂件,项⽬中添加引⽤的第三⽅库没有.pdb⽂件;
⼆、使⽤反编译⼯具(这⾥使⽤的是dnSpy),打开.exe和.dll的⽂件,可以看到库中的类和引⽤;
三、点击⽂件--导出到⼯程可导⼊到⼀个⽂件夹中,并且会有.sln⽂件(注意:导的时候把所需⽂件⼀块导出);
四、可以直接使⽤Visual Studio打开项⽬,因为反编译并不能尽善尽美,有可能会有反编译后的类中有错误的情况,需要⾃⼰修改错误和添加第三⽅库(第三⽅库打包后的程序中都有,错误多可以尝试使⽤其它反编译⼯具,结合不同⼯具看反编译后的代码的差异);
五、也可以⾃⼰创建项⽬,然后⾃⼰创建相应的程序集和⽂件夹,把反编译后的类和页⾯都复制到项⽬中使⽤,我就是⽤的这种⽅法,⾃⼰创建程序集和⽂件夹,整合并修改完错误可以运⾏,因为总感觉使⽤反编译⼯具的程序有不完善的地⽅,没有⾃⼰创建的项⽬实在;
dnSpy反编译⼯具下载:
链接:
提取码:hz6f
备注:windows服务和winform项⽬反编译是⼀样的;程序发布后程序集只会打包成dll⽂件,页⾯⽂件可以直接使⽤,如果需要反编译为可以运⾏的程序,需要⾃⼰创建项⽬把反编译的类和页⾯整合起来。
入门知识体系1.基础概念•简介:是一种面向对象的编程语言,由Microsoft开发,主要用于开发Windows应用程序和Web应用程序。
•开发环境:通常使用Visual Studio作为开发环境。
2.基本语法•程序结构:•Module Module1•Sub Main()•' 程序入口•End Sub•End Module•变量声明:•Dim message As String = "Hello, World!"•Dim number As Integer = 103.数据类型•常见数据类型:o String:字符串o Integer:整数o Double:双精度浮点数o Boolean:布尔值4.控制结构•条件语句:•If number > 5 Then•Console.WriteLine("Number is greater than 5")•Else•Console.WriteLine("Number is 5 or less")•End If•循环语句:•For i As Integer = 1 To 5•Console.WriteLine("Iteration: " & i)•Next5.数组和集合•数组:•Dim numbers As Integer() = {1, 2, 3, 4, 5}•For Each num In numbers•Console.WriteLine(num)•Next•列表:•Dim list As New List(Of String)•list.Add("Item1")•list.Add("Item2")6.函数和子程序•定义函数:•Function Add(x As Integer, y As Integer) As Integer •Return x + y•End Function•调用函数:•Dim result As Integer = Add(10, 20)•Console.WriteLine("Result: " & result)7.面向对象编程•类的定义:•Public Class Person•Public Property Name As String•Public Property Age As Integer••Public Sub Introduce()•Console.WriteLine("My name is " & Name & " and I am " & Age & "years old.")•End Sub•End Class•创建对象:•Dim person As New Person()• = "Alice"•person.Age = 30•person.Introduce()8.常用类•字符串操作:•Dim str As String = "Hello"•Console.WriteLine(str.ToUpper()) ' 输出:HELLO•日期时间:•Dim today As DateTime = DateTime.Now•Console.WriteLine("Today's date: " & today.ToString("yyyy-MM-dd"))实际案例:控制台应用程序以下是一个简单的控制台应用程序,接收用户输入并计算其年龄。
安装程序打包:.net windows程序的打包,安装与卸载标签:杂谈第一步:创建windows程序,创建安装类1.在你创建的应用程序工程中添加一个安装类,在添加一个新项,找到"Installer1 Class",修改类名后确定注:如果要安装的时候,要注册windows服务,那就需要拖入一个ServiceController的组件,在控件的属性里设置windows服务的相关参数即可如果是普通应用程序,可以省略上面这步,在安装类的设计器上点右键,事件,你可以在这里添加一些诸如安装前做什么事情【BeforeInstall】,或者安装完成后[After Install]做什么事情的事件执行一些特定的操作。
(如无特殊操作,则此步也可以省略,直接进入下一步)第二步:制作windows程序的安装包,创建开始菜单,桌面快捷方式打开已有的Visual Studio应用程序工程(项目)或者例子程序。
编译并执行此windows应用程序,以确认应用程序没有错误。
在您已有的项目中添加一个新的项目:Visual Studio 2005 - 选择File » Add » New Project. Other Project Types » Setup and DeploymentVisual Studio 2008 -选择 new-->project-->other project types--set up and deployment ;在Templates面板,选择 Setup Wizard。
在Name框中,键入“My Installer”。
点击 OK 关闭对话框并打开助手。
点击 Next。
选择 Create a setup for a Windows Application 并点击 Next。
选中 Primary Output for [项目名称] 并点击 Next。
1、在这个安装包制作的过程中,所用到的一些图片或者文件,如:快捷键图片,安装步骤中每个图形界面的背景图片等都要事先在[应用程序文件夹]中事先添加好这些图片,即在安装项目中添加这些图片,文件好像是解决方案下debug下的所有文件都拷贝,如exe、config、rpt还有图片等
2、安装包中的那个Install里面的方法的执行时间是在:所以的文件都安装好了后再执行其中的号码。
如客户端安装是在配置文件已经装好了后,但是其中的配置节还没有信息,但是在代码中赋值之后就有了,还有服务器也一样,如数据库也一样,首先是拷贝到客户端电脑上,然后再执行install中的代码,。
获取硬盘上的数据库文件,然后再在数据库中创建,并且引用到这个数据库文件
第一、给安装项目添加必要的文件,貌似是应用程序debug文件夹下的所有文件,还有是安装系统要用的图片文件
第二、添加系统必备:安装项目右键->属性->选择系统必备,
必选上[数据访问组件]、[.net 2.0]、[windows installer 3.1]。
如果应用程序中有rpt的报表就要加上报表引擎
其中【指定系统必备组件的安装位置】要选择第二个,【从与我的应用程序相同的位置下载系统必备组件】
(第三)选择应用程序文件夹。
右键添加项目输出项。
将应用程序设置为主输出
第三、添加卸载程序
打开系统目录C:\WINDOWS\system32找到文件msiexec.exe,复制到刚创建的安装项目文件系统视图的应用程序文件夹中。
第四、创建【用户的'程序'菜单(包括安装和卸载)】
首先创建一个文件夹,然后在文件夹里创建下面两个,因为这个文件夹就是在开始菜单->程序->该文件夹->安装和卸载
1、创建卸载快捷键(先选择程序,然后配属性):
选择【用户的'程序'菜单】->在中间空白地方右键【创建快捷键】->选择msiexec.exe->右键快捷键选择属性->修改Name和ICON->配置Arguments属性。
配置Arguments属性的方法是:单击安装项目,是左键单击,然后找到ProductCode,复制下来,然后Arguments=/x ProductCode(这里注意有个空格)。
2、创建安装快捷键(也是先选择程序,然后配属性):
选择【用户的'程序'菜单】->在中间空白地方右键【创建快捷键】->选择[应用程序的exe文件]->右键快捷键选择属性->修改Name和ICON,且安装不需要配Arguments属性
3、在【用户桌面】中重复第2步的操作
第五、添加用户操作界面
右键安装项目->视图->用户界面:
安装的过程无非就是:启动->进度->结束
给启动添加一个【文本框A】,并且将它上移到安装文件夹的上面(安装程序运行的时候就是按着上面的顺序运行的)
->右键这个【文本框A】,填写其中的值
第六、添加自定义操作
为安装解决方案添加一个类库项目,删除Class1.cs
为类库项目添加一个【安装程序类】->Installer1
第七、
完成将我们自定义的安装类接入到安装过程:
1、将我们新建的类库作为主输出添加到安装项目中
选择【应用程序文件夹】,在中间空白部分右键选择【添加项目输出】将设置新建的类库作为主输出
2、打开安装项目的“自定义操作视图”然后在相应(安装、卸载和回滚等)的节点上“右键”添加自定义操作《选择主输出》
右键选择【CustomActionData】
/PassWord=[PASSWORD] /UserName=[USERNAME] /Server=[SERVER] /TargetDir="[TARGETDIR]\"
(注:/targetdir="[TARGETDIR]\"传递安装目录的路径、[PASSWORD]等这些是我们在用户界面上设置的文本框的属性)
第八、再次完善新建的类库,给其中添加方法
1、重写安装函数public override void Install(System.Collections.IDictionary stateSaver)
2、重写卸载函数public override void Uninstall(IDictionary savedState)
3、重写安装完成后函数protected override void OnAfterInstall(IDictionary savedState)
完成
附加:如果我们想在程序卸载的时候保留某些文件则需要配置这些文件的属性如下即可:即:Permanent为true
在安装的的过程中,在应用程序(不是安装解决方案)有些图片文件或者rpt文件也要放在安装后的文件夹中那么就这样设置
将应用程序中的这些文件的一个属性【复制到输出目录】属性为:
”如果较新则复制”或者“始终复制”,同时在安装项目中添加winfrom项目的“内容文件输出”则在安装包生成过程中自动复制文件到安装包中。
附加2、卸载方法二:(推荐)
1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性
标签,不是右键中的属性),下面要用到
2.用建立一个新的控制台程序uninst.exe文件
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then myProcess.Start("msiexec",
"/X{2B65D4A9-C146-4808-AB4B-321FB077955
9}") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷
方式
附加3、可以再安装类库项目中再建立一个winform窗体程序,然后在安装类中调用,因为我们在安装项目中添加了一个文本框A其实目的就是更改config文件,那么这里再建立一个winform项目的话也可以实现同样的效果,而且还可以进行更好看的界面
安装包的版本升级,每次升级一定要设置Vesion这个属性和ProductCode这个属性,同时也要设置卸载图标的那个属性,否则当再次安装的时候会提示你到控制面板中删除,然后每次升级的时候版本号要比上个版本号要高,否则的话会提示你不能安装,这种情况只能手动卸载掉电脑上的应用程序然后再进行安装。