1. 程式人生 > >為自己編寫的windows應用程序制作安裝包

為自己編寫的windows應用程序制作安裝包

sting 代碼 msd 如何 gid rmi extension 目錄 參考資料

1 寫好了一個windows程序之後如何制作安裝包

這個在vs中就可以直接發布了,可以制作msi的安裝包和exe的安裝包。

2 window應用程序安裝包做了哪些事情

rpm安裝包的話,只是把相應的文件拷貝到不同的目錄。那麽window安裝包做了什麽呢?

msi裏面有一個table,裏面是一條條的指令,windows installer會解釋並執行這些指令。

它還是會把安裝包裏面的文件拷貝到相應的目錄。關鍵是它除了拷貝還做了哪些事情呢?

3 安裝包除了把相應的文件放到不同的目錄下,還做了哪些事情,比如註冊表

第一,將安裝的產品告訴給系統。

第二,查找系統是否有我需要的某個文件,不如某個動態庫。

第三,計算本次安裝需要占用的磁盤空間的大小,判斷當前的磁盤空間是否夠。

第四,修改註冊表。

4 安裝包操作註冊表是為什麽?註冊表在程序安裝和運行過程中起到了什麽作用

可以在制作安裝包的時候向註冊表中添加鍵值對,這個鍵值對可以在代碼中訪問。

5 windows installer

5.1 windows installer解析windows安裝包中的指令table,完成安裝過程

5.2 windows installer的標準動作

安裝包中被windows installer使用的tables:

有很多的tables

5.2.1 發布產品、特性和部件的action

就是把產品、特性和部件告訴給windows系統。

5.2.2 文件查找action

安裝的時候,查找系統中是否存在某個文件。

5.2.3 file costing action

看當前的安裝需要消耗多少的磁盤空間。

5.2.4 文件安裝action

就是講指定的文件從源目錄拷貝到目的地目錄。

5.2.5 修改註冊表action

當部件和文件都安裝到目的地目錄之後,就可以修改註冊表了。只有在文件安裝action執行完成之後,才能執行註冊表修改action。

5.2.5.1 RegisterClassInfo action

註冊安裝部件的COM類信息。

5.2.5.2 RegisterExtensionInfo action

5.2.5.3 RegisterProgIdInfo action

5.2.5.4 RegisterMIMEInfo action

5.2.5.5 WriteRegistryValues action

5.2.5.6 RemoveRegistryValues action

這個是卸載的時候執行的。

參考資料:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa372022(v=vs.85).aspx

orca tool

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370557(v=vs.85).aspx

為自己編寫的windows應用程序制作安裝包