轉:用 vs.net做安裝卸載程式

來源:互聯網
上載者:User

安裝程式在vs.net是內建的,尤其是在.net2005中,非常方便,介面也比2003美觀了許多。但是仍然存在的不方便的地方就是沒有內建卸載程式,如果要求安裝的人都從控制台中去卸載,也太費勁了,所以今天上網找了找例子,發現了一些,所以一一記述下來。

方法一:利用msiexec.exe檔案(一般在\winnt\system32目錄下)。將該檔案整合到安裝檔案目錄中,然後選擇安裝項目的工程屬性,找到Product Code一覽,比如ProductCode {5284694C-24C1-4FCF-A705-D4B9A0081274},將這個{5284694C-24C1-4FCF-A705-D4B9A0081274}copy下來,然後在開始菜單中建立msiexec.exe的捷徑,起個名字叫卸載,然後選擇屬性,在Argumengs一覽中填寫/x空格,然後把那個copy下來的ProductCode 複製到這裡,就OK了,然後編譯產生安裝檔案,試著安裝一下,卸載程式就在開始菜單中了。用這個的好處呢就是方便,但是由於copy了一個和作業系統相關的msiexec.exe檔案,所以仍然是不太合適。
方法二:1、先部署程式,記下程式的ProductCode 的值 ,例如:50026DC8-69DC-4B92-89CC-3D10AD4CA8C4
(選擇方案總管根目錄如setup,再查看屬性標籤,不是右鍵中的屬性)
2、建立1個新的winFrom程式
3、刪除自動產生的form1。
4、添加個類,寫入下面代碼
using System;

namespace uninst
{
/// <summary>
/// Class1 的摘要說明。
/// </summary>
public class UnInstall
{
[STAThread]
static void Main(string[] args)
{
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} /qr");
//{50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} 就是上訴的ProductCode
}
}
}
5、產生新的控制台程式
6、再把這個新的卸載程式添加到你的安裝包裡就行了。

方法三:1.用VS.net建立一個新的控制台程式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-321FB0779559}") '改為自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
2.將控制台程式BIN目錄的exe檔案加入到打包程式檔案中
3.在程式組建立uninst.exe的捷徑

以上就是我在網上找的例子,個人比較推薦的還是後兩種,啟示後兩種一樣,就是自己單做一個卸載程式,總比拿著微軟的msiexec.exe滿大街跑要好的多……嗯,好了,有需要的同志可以看看,希望微軟可以在做安裝程式的同時,幫我把卸載程式也做了……:(。hoho,人麼,總是希望懶一些而多得一些東西的。

打包的具體操作步驟:

1)建立“安裝和部署項目”-->“安裝嚮導”

2)選擇菜單中 項目-->添加-->檔案(這裡選“建立用於windows應用程式.exe”)-->開啟

3)一般會自動將依賴項添加到“檢測到的依賴項”,如果沒有,那麼我們要手動將其加入4)
Crystal_Managed2003.msm (如果有水晶報表)
dotnetfxredist_x86.msm (.net一定是必須的)
... (如果有引用其他的dll)

4)手動加入要包含的檔案:項目-->添加-->合併模組(添加你的程式檔案) (包括dotNetFramework和MDAC27)
位於:C:\Program Files\Common Files\Merge Modules\ 下

具體功能如下:
(託管組件 MSM 處理所有託管組件的分發,其中包括 Windows 表單查看器、Web Form查看器和所有 Crystal Decisions 命名空間)
* Crystal_Managed2003.msm、
Crystal_Managed2003_chs.msm、

(對於使報表運行所需的所有其他檔案,由資料庫訪問 MSM 處理其分發。其中包括資料庫、匯出和圖表驅動程式。)
* Crystal_Database_access2003.msm、
Crystal_Database_access2003_chs.msm、

(KeyCode MSM 處理 Crystal Decisions 密鑰號碼的安裝,注意是添加合併模組,否則沒有“MergeMouduleProperties”屬性)
* Crystal_regwiz2003.msm、

(是vc的運行庫,估計是Crystal Report或涉及到的某些程式是用vc寫的,所以需要它!))
VC_User_CRT71_RTL_X86_---.msm、
VC_User_STL71_RTL_X86_---.msm、

5)開啟解決方案-->右鍵點擊Crystal_regwiz2003.msm的屬性,在“MergeMouduleProperties”裡的“License Key”填入:AAP5GKS0000GDE100DS(這個是你產生Crystal Report是用到的註冊號的密碼!)

6)產生解決方案(或直接按Ctrl Shift B)

至此整個分發程式已經做好,再把剛才做的那個安裝程式雙擊一下……

-----------------------------------------------------------------------
打包時加入卸載功能:

方法一:
1.在打包項目中添加檔案msiexec.exe(一般可在c:\windows\system32\下找到)
2.在檔案系統視圖中選擇應用程式檔案夾,在msiexec.exe上按右鍵,選擇創建捷徑,重新命名捷徑為"卸載".
3.更改此捷徑的Arguments 為"/x {產品id}",產品id的值為打包項目的ProductCode屬性值.

方法二:(推薦)
1.用VS.net建立一個新的控制台程式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-321FB0779559}") '改為自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
2.將控制台程式BIN目錄的exe檔案加入到打包程式檔案中
3.在程式組建立uninst.exe的捷徑

Vs.net中部置應用程式卸載- -

      相信很多人都做過安裝程式,目前最大功能最全的當屬InstallShield,但是InstallShield的文法學習起來實在費勁,相對而言vs.net內建的安裝部署短小精悍,且使用C#文法,對於一般C#開發人員來說使用起來就極為簡便,在對其作了一些研究之後,發現vs.net的安裝部署項目的功能也已經非常好用,一般的程式安裝都可以輕鬆實現,當然,在研究的過程中也發現了一些缺陷,最主要一個問題是安裝後卸載不方便,一定要去控制台裡。可以按如下的方法解決,在程式裡添加一個卸載的捷徑。

1.建立一C# Windows From項目,完成項目的工作

2.菜單-》檔案-》添加項目-》建立項-》安裝部署項目-》安裝嚮導

選擇上面那個項目的主輸出。

在安裝項目的屬性欄中會顯示出"XXX部署項目屬性",在第一個AddRemoveProgramsIcon屬性後"瀏覽"到你的ICO表徵圖,接著在下面Author輸入作者名,也就是你的名字,其他Localization是語言屬性,Manufacturer,ProductName的屬性將是使用者在安裝時預設設定的檔案夾路徑一部分了,設定Title為你的應用程式標題名稱。

3.右擊"安裝項目"上,選擇檔案系統視圖

在應用程式檔案夾,添加一個檔案,如果是WIN98下的安裝,請選擇WIN98作業系統目錄下的msiexec.exe檔案(一般在c:\windows\system目錄下);如果是其他,比如WIN2K系列,請選擇該作業系統目錄下的msiexec.exe檔案(一般在\winnt\system32目錄下)。

4.在檔案系統視圖的"使用者程式菜單"裡,添加一個目錄,命名為項目的名字,

並且,在這個目錄裡,添加一個捷徑,指向項目的主輸出,

再添加一個捷徑,指向加入的檔案Msiexec.exe,命名為:"卸載",

5.在解決方案裡,選擇安裝項目,再開啟屬性視圖,開啟安裝項目的屬性面板,裡面有一項:

ProductCode  {5284694C-24C1-4FCF-A705-D4B9A0081274}

把後面的{5284694C-24C1-4FCF-A705-D4B9A0081274},複製一下。

6.在"卸載"捷徑的屬性裡,有一個叫Arguments的屬性欄,在屬性欄中首先填入"/x"後加一個空格,再"粘貼",將ProductCode的屬性值COPY至此。

7、再在VS.Net的頂部功能表列中"產生"-"產生 XXXX"(XXXX為你的項目名稱)

8、從微軟網站上http://www.microsoft.com/downloads/直接下載Microsoft .NET Framework 1.1 版可轉散發元件包(dotnetfx.exe檔案),COPY到您的發布產生的目錄中,再放上你的安裝說明及提示檔案等。安裝說明中提示使用者首先安裝dotnetfx.exe,再點擊你的應用程式進行運行即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.