① 用C語言寫出來的程序如何打包成完整的軟體
1、如果是用VC++ 直接可以生成release exe的可執行文件。
2、以GCC編譯器為例,可以分為四步。
第一步是預處理,包括語法檢查等工作。
gcc -P abc.c
第二知步由源程序生產匯編語言代碼。道
gcc -S abc.c
會生成abc.s文件,這個文件里就是匯編代碼。
第三步編譯器生成目標代碼,一回個源文件生成一個目標代碼。
gcc -c abc.c
會生成abc.o
第四步連接器從目標代碼生成可執行文件。答
gcc abc.o
目標代碼包括機器碼和符號表(函數及變數名)。連接器的主要作用是通過符號表在庫文件和其他模塊中找到在目標代碼中引入或未定義的符號(函數及變數名),將幾個目標代碼合成可執行文件。
② 如何將源代碼編譯成jar包
先打開命令提示符(win2000或在運行框里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創建新的存檔
-t 列出存檔內容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標准輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用zip壓縮格式
-M 不產生所有項的清單(manifest〕文件
-i 為指定的jar文件產生索引信息
-C 改變到指定的目錄,並且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。
首先在資源文件當前目錄寫一個清單文件example.mf
mf文件應是以下格式:
第一行為:
Main-Class: Hello
然後最少兩個空行。
其中的Hello.class是你寫的程序中main函數所在的那個類名。
有兩點必須記得:
1,在第一行中"Main-class:"之後一定要有一個空格。後有最少兩個空行
2,類名不能寫成Hello.class的格式,要省了後輟。
我試過了,你錯的原因是"Main-class:"之後沒有一個空格。
在CLASS目錄下運行:jar cfm example.jar example.mf A.class B.class
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
來個小例子試試看:
我們只有一個HelloWorld,如下:
public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
將這個java文件存到C盤跟目錄下,ok,接下來,
在先前打開的命令提示符下(跳轉到C盤提示符下),我們輸入javac HelloWorld.java,然後繼續輸入:jar cvf hello.jar HelloWorld.class,回車後去你的C盤看看,多了什麼,沒錯 hello.jar 。
基本的步驟我們現在都知道了,你可以自己去嘗試一下隨著jar後面的參數的不同,結果有什麼變化。
緊接著我們看看如何運行我們的jar包。
在進入正題之前,你要先打開我們剛剛做好的jar包看看,多了什麼呢,META-INF目錄?再看看裡面是什麼,還有一個MANIFEST.MF文件是不是?用文本編輯器(我這里是UltraEdit)打開它看看:
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
就是這樣。這里我們對它進行修改,加一句:Main-Class: HelloWorld (在第三行)。這個就是我們之前寫的那個類,也就是我們的入口類。也即,
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld
接下來,我們在命令提示符里執行:
jar umf MANIFEST.MF app.jar (應該是hello.jar吧)
這樣我們使用了我們自己的MANIFEST.MF文件對原來默認的進行了更新。你不妨可以再進去看看是不是添上了Main-
Class: HelloWorld這一句。 (是嗎,我怎麼沒試出來,提示
java.io.FileNotFoundException:MANIFEST.MF(系統找不到指定的文件)怎麼回事?
)
Ok,這個最後的一步了,來驗證我們做的一切,在命令提示符中輸入:
java -jar hello.jar(執行)
出現了什麼, Hi, Hello World!
我們再來看看jar文件在tomcat中發布,注意:在tomcat中我們就不能再用jar這種格式,而改war格式,它是專門用於web應用的,其實整個過程下來基本上和jar是類似的:
先准備我們要打包的資源。
找到存放tomcat的webapps目錄,進到其中,新建一個文件夾,這里命名為hello,再進去新建WEB-INF文件夾,再進去新
建 classes文件夾,此時我們也將我們唯一的servlet,HelloWorld.java放到這里,在與classes目錄同級下建立一文
件 web.xml。Ok,目前我們初步建立了一個簡單的web應用。
這是HelloWorld.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!
對它編譯。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
在命令提示符下進到先前創制的hello目錄下,執行 jar cvf hello.war * ,我們便得到hello.war。將它拷貝至webapps目錄下,ok,來看最後一步,打開tomcat的目錄conf中的server.xml,加入:
<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!運行它,啟動tomcat,後在瀏覽器中輸入http://localhost:8080/hello/HelloWorld,有了嗎?
最後,如果你想用ant來完成以上的打包活動,下面就告訴你:
對於jar來說。在build.xml中,
<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
對於war,
<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就這么多,希望對你有點幫助。:)
補充:
jar基本操作:
1. 創建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(詳細的) output.
3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.
2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(詳細的) output.
3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(僅提取文件yahh.txt)
2)jar xf yahh.jar alex/yahhalex.txt(僅提取目錄alex下的文件yahhalex.txt)
3)jar xf yahh.jar(提取該jar包中的所有文件或目錄)
4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.
5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file
③ 小程序的提交發布流程是怎樣的
小程序首先需要認證,如果已有公眾號認證,則可以直接復用資料,如果是企業用戶則需要支付300元的費用。
然後精彩的地方來了,認證完後還需要這九大步驟:
授權小程序
修改伺服器域名
上傳小程序代碼
生成體驗二維碼
將第三方提交的代碼包提交審核
發布已通過審核的小程序
查看小程序審核狀態
生成小程序碼
查看小程序基本信息
是的,現在微信小程序認證就是要這么麻煩,而且最後審核時,資料也必須與之前認證時對應上。
如果不想走這些流程,可以找第三方小程序開發定製平台,有個業內口碑挺不錯的叮鐺應用,小程序製作自定義程度很高的,我也用過他們代注冊服務的,方便好多也便宜。
望採納。
④ 怎樣製作一個小程序
製作小程序的的好處可以這樣形容,你開一個實體店,再大也做不到開到全國甚至全世界,即便是全球連鎖你也不能讓客人一秒到達你的店裡,但是小程序可以。由此可見小程序的方便程度。
下面來給告訴大家幾種製作小程序的方法。
第一種自行製作簡單門店小程序:門店小程序是可以自己製作的,但只能展示商家門店單張照片,和顯示商家門店地點,以及營業時間和聯系電話,因此這種小程序只適合對小程序要求不高的小型商家用來宣傳自己的門店。
第二種第三方小程序開發:由於自行開發成本和時間都很高,所以催生了第三方小程序開發公司,性價比也是非常的高,而且營銷工具多,擁有拼團秒殺等功能,能幫助商家一體化解決經營遇到的問題。
另外,也要注意一些小程序製作注意事項
1、小程序的裝修風格和功能。
小程序都是無需安裝就可以直接使用的,但是必須注重自身的行業風格,並不是只要是小程序就可以通用的,不適合小程序後期會有很多麻煩,與其後期花時間處理這些麻煩不如在前期就做好,而且後期處理影響用戶的體驗度,比如樓上小區顧客這次使用發現不能用,他會理所當然的認為你小程序有問題不能用,這會導致他直接放棄或者很長時間都會對你的小程序存有不良的印象。所以前期要做好,盡量避免後期的bug。
2、要有一些營銷功能
我們知道小程序最基本的特點就易於傳播,而傳播如果遇到問題我們就需要進行一些必要的營銷手段,所以小程序的營銷功能一定不能少,這個競爭嚴重的時代,沒有營銷就很難獲客,沒有客戶我們做小程序就沒有任何意義了,不能幫助我們收益的產品根本沒有投入的必要。
⑤ 我用C#寫好了一個小程序,怎樣將它打包成應用程序,就是可以在別的電腦直接點擊了就運行 具體點,謝謝了
DotNet(C# )系統安裝程序製作StepByStep(包括FrameWork安裝和資料庫安裝...
如果你的程序不涉及資料庫,則跳過資料庫的部分。
首先需要把你要建立的資料庫表結構導出來,使用slqserver的導出向導導出表結構,先保存到db.sql文件中吧。
可選步驟:安裝Framework引導程序插件。
安裝了這個插件你製作的安裝包就通過 Microsoft Visual Studio .NET 2003 引導程序插件,您可以輕而易舉地創建安裝程序,將 .NET Framework 1.1隨您的應用程序一起重新分發。
引導程序插件 PluginInstaller.msi 的下在地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=627921a0-d9e7-43d6-a293-72f9c370bd19&displaylang=zh-cn
第一步:創建部署項目
1. 在「文件」菜單上指向「添加項目」,然後選擇「新建項目」。
2. 在「添加新項目」對話框中,選擇「項目類型」窗格中的「安裝和部署項目」,然後選擇「模板」窗格中的「安裝項目」。在「名稱」框中鍵入 Setup。
3. 單擊「確定」關閉對話框。
4. 項目塌基伏被添加到解決方案資源管理器中,並且文件系統編輯器打開。
第二步:創建安裝程序類
1. 在「文件」菜單上指向「新建」,然後選擇「項目」。
2. 在「新建項目」對話框中,選擇「項目類型」窗格中的「項目」,然後選擇「模板」窗格中的「類庫」。在「名稱」框中鍵入 DBCustomAction。
3. 單擊「打開」關閉對話框。
4. 從「項目」菜單中選擇「添加新項」。
5. 在「添加新項」對話框中選擇「安裝程序類」。在「名稱」框中鋒晌鍵入 DBCustomAction。
6. 單擊「確定」關閉對話框。(代碼附後)
第三步:將項目的輸出添加到部署項目中
1. 在「文件系統編輯器」中,選擇「應用程序」文件夾。在「操作」菜單上,指向「添加」,然後選擇「項目輸出」。
2. 在「添加項目輸出組」對話框中,選擇「項目」下拉列表中你的項目。
3. 單擊「確定」關閉對話框。
4. 從列表中選擇「主輸出」,然後單擊「確定」。
第四步:創建自定義安裝對話框
1. 在解決方案資源管理器中選擇「Setup」項目。在「視圖」菜單上指向「編輯器」,然後選擇「用戶界團攜面」。
2. 在用戶界面編輯器中,選擇「安裝」下的「啟動」節點。在「操作」菜單上,選擇「添加對話框」。
3. 在「添加對話框」對話框中,選擇「許可協議」對話框,然後單擊「確定」關閉對話框。
4. 在「添加對話框」對話框中,選擇「文本框 (A)」對話框,然後單擊「確定」關閉對話框。
5. 在「操作」菜單上,選擇「上移」。重復此步驟,直到「文本框 (A)」對話框位於「安裝文件夾」節點之上。
6. 在「屬性」窗口中,選擇 BannerText 屬性並鍵入:安裝資料庫.。
7. 選擇 BodyText 屬性並鍵入:安裝程序將在目標機器上安裝資料庫。
8. 選擇 Edit1Label 屬性並鍵入:資料庫名稱:。
9. 選擇 Edit1Property 屬性並鍵入 CUSTOMTEXTA1。
10. 選擇 Edit1Value 屬性並鍵入:GsCrm。
11. 選擇 Edit2Label 屬性並鍵入:伺服器名:。
12. 選擇 Edit2Property 屬性並鍵入 CUSTOMTEXTA2。
13. 選擇 Edit2Value 屬性並鍵入:(local)。
14. 選擇 Edit3Label 屬性並鍵入:用戶名:。
15. 選擇 Edit3Value 屬性並鍵入:sa。
16. 選擇 Edit3Property 屬性並鍵入 CUSTOMTEXTA3。
17. 選擇 Edit4Label 屬性並鍵入:sa用戶密碼:。
18. 選擇 Edit4Property 屬性並鍵入 CUSTOMTEXTA4。
第五步:創建自定義操作
1. 在解決方案資源管理器中選擇「Setup」項目。在「視圖」菜單上指向「編輯器」,然後選擇「自定義操作」。
2. 在自定義操作編輯器中選擇「安裝」節點。在「操作」菜單上,選擇「添加自定義操作」。
3. 在「選擇項目中的項」對話框中,雙擊「應用程序文件夾」。
4. 選擇「主輸出來自 DBCustomAction(活動)」項,然後單擊「確定」關閉對話框。
5. 在「屬性」窗口中,選擇 CustomActionData 屬性並鍵入 /dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"。
附/targetdir="[targetdir]\"是安裝後的目標路徑,為了在dbcustomaction類中獲得安裝後的路徑,我們設置此參數。
另外,安裝後的路徑也可以通過Reflection得到:
Dim Asm As System.Reflection.Assembly = _
System.Reflection.Assembly.GetExecutingAssembly
MsgBox("Asm.Location")
第六步:添加db.sql以及你需要的其他文件到項目中,然後就可以打包了。
還 有最重要的一個問題,當時困擾了我三個多小時,就是用.net這個程序打包的程序,安裝過程用戶所選擇的安裝路徑中是不能含有空格的。為什麼呢?原來是 sql server的osql的執行命令行方式的時候,如果你的安裝路徑中含有空格的話,那個命令行是不能正確的執行的。「osql -U userId -P password -d dbname -i c:\test\db.sql」
另外安裝的時候也可以直接修改安裝後的app.config來完成你的配置,李洪根的文章中有相關介紹。
DBCustomAction.cs
using System;
using System.Data.SqlClient;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace DBCustomAction
{
/// <summary>
/// DBCustomAction 的摘要說明。
/// </summary>
[RunInstaller(true)]
public class DBCustomAction : System.Configuration.Install.Installer
{
/// <summary>
/// 必需的設計器變數。
/// </summary>
private System.ComponentModel.Container components = null;
public DBCustomAction()
{
// 該調用是設計器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 調用後添加任何初始化
}
/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 組件設計器生成的代碼
/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
private void ExecuteSql(string connStr,string DatabaseName, string Sql)
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(Sql, conn);
conn.Open();
conn.ChangeDatabase(DatabaseName);
try
{
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
try
{
//------------------------建立資料庫----------------------------
string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", this.Context.Parameters["server"], this.Context.Parameters["user"], this.Context.Parameters["pwd"]);
ExecuteSql(connStr, "master", "CREATE DATABASE " + this.Context.Parameters["dbname"]);
System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
sqlProcess.StartInfo.FileName = "osql.exe";
sqlProcess.StartInfo.Arguments = string.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", this.Context.Parameters["user"], this.Context.Parameters["pwd"], this.Context.Parameters["dbname"], this.Context.Parameters["targetdir"]);
sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
sqlProcess.Start();
sqlProcess.WaitForExit(); //等待執行
}
catch(Exception e)
{
Console.Write(e.ToString());
}
finally
{
}
}
}
}
第六步:添加db.sql以及你需要的其他文件到項目中,然後就可以打包了。
還 有最重要的一個問題,當時困擾了我三個多小時,就是用.net這個程序打包的程序,安裝過程用戶所選擇的安裝路徑中是不能含有空格的。為什麼呢?原來是 sql server的osql的執行命令行方式的時候,如果你的安裝路徑中含有空格的話,那個命令行是不能正確的執行的。「osql -U userId -P password -d dbname -i c:\test\db.sql」
另外安裝的時候也可以直接修改安裝後的app.config來完成你的配置,李洪根的文章中有相關介紹。
DBCustomAction.cs
using System;
using System.Data.SqlClient;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace DBCustomAction
{
/// <summary>
/// DBCustomAction 的摘要說明。
/// </summary>
[RunInstaller(true)]
public class DBCustomAction : System.Configuration.Install.Installer
{
/// <summary>
/// 必需的設計器變數。
/// </summary>
private System.ComponentModel.Container components = null;
public DBCustomAction()
{
// 該調用是設計器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 調用後添加任何初始化
}
/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 組件設計器生成的代碼
/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
private void ExecuteSql(string connStr,string DatabaseName, string Sql)
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(Sql, conn);
conn.Open();
conn.ChangeDatabase(DatabaseName);
try
{
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
try
{
//------------------------建立資料庫----------------------------
string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", this.Context.Parameters["server"], this.Context.Parameters["user"], this.Context.Parameters["pwd"]);
ExecuteSql(connStr, "master", "CREATE DATABASE " + this.Context.Parameters["dbname"]);
System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
sqlProcess.StartInfo.FileName = "osql.exe";
sqlProcess.StartInfo.Arguments = string.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", this.Context.Parameters["user"], this.Context.Parameters["pwd"], this.Context.Parameters["dbname"], this.Context.Parameters["targetdir"]);
sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
sqlProcess.Start();
sqlProcess.WaitForExit(); //等待執行
}
catch(Exception e)
{
Console.Write(e.ToString());
}
finally
{
}
}
}
}
⑥ 製作小程序的步驟
不知道技術不清楚怎麼去製作一個小程序,關鍵點是不用花一分錢。如下就給哪些不知道怎麼製作小程序的夥伴來說說我的小訣竅吧!
選擇小程序或者支付寶小程序。
跳轉頁面後,進入打包小程序頁面,選擇「代碼包下載」。
3、微信Web開發工具
進入微信公眾平台,下載開發工具。
小程序項目管理」頁面,點擊添加項目。
填入申請到的小程序的AppID,上傳剛剛下載的打包文件。
在開發者裡面能從小程序預覽,確認無誤後,然後上傳。
上傳後公眾號小程序後台會出現,提交審核,審核通過發布即就行。
而這樣一個小程序就做成功了,也不用花你一分錢就能做成功,俗話說技多不壓身,只要你身懷本領走到哪裡都餓不死。做事情只要掌握了技巧方法,學以致用再怎麼樣也能有成效吧!