青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 131, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

使用InstallShield 2009的筆記

Posted on 2012-11-07 14:54 盛勝 閱讀(357) 評論(0)  編輯 收藏 引用

步驟

1. 開始

   網(wǎng)上說一般的打包工程選擇Basic MSI Project,如果需要對界面需要進行很高的定制就需要選擇InstallScript MSI Project。

由于我只需要打包,已經(jīng)執(zhí)行部分腳本因此我選擇了Basic MSI Project。輸入Project Name,選擇Location后點擊OK,新建工程。

進入到下圖界面,此時我們可以選擇兩種打包方式(紅框處選擇)

1.Project Assistant   可以進行簡單的類似向?qū)ь惖呐渲眉纯蛇M行打包工作,如果選擇這種方式,Visual Studio自帶的工具也能輕松實現(xiàn)

2.Installation Designer 完全自由化的配置,自我定制程度最高。

根據(jù)需求情況,我自然選擇第二種方式

2.配置

點選Installation Designer,進入如下界面

image

紅框處就是需要選擇配置的區(qū)域了。

 

2.1 General Information

在Installation Information中選擇General Information,在這里配置軟件的基本信息

image

紅線處你可以寫上你的大名,你是這個Project的作者

下面的Setup Langueages可以選擇安裝語言,我這里只考慮了簡體中文,故未更改設(shè)置。

R0(NKEJLG6%FKR7[GF~[6EI

紅框里填寫上你公司的名字和網(wǎng)址,我舉個例子才寫的這兩個

image

在Product Properties中填入軟件的信息,軟件的名字、版本什么的。

INSTALLDIR是指安裝目錄,圖中的配置方法默認是指這個路徑: C:/Program Files/Transformers/Demo

 

2.2 Files

003 File and Folders

右邊的區(qū)域被分成了四塊,上面兩塊是本地計算機,下面兩塊是目標計算機

總的思路跟資源管理一樣,這里你就可以按照你自己的思路來定制了

舉個列子,我隨便找點東西打包

在Destination computer’s folders中把樹展開,選中Demo[INSTALLDIR],這是什么東西相信看看就明白了,如果不明白的話那就需要再學(xué)習(xí)下基礎(chǔ)知識了。

從Source computer‘s files(本地計算機)中拖動一些文件到Destination computer’s files中,就會彈出如下提示

image

你需要創(chuàng)建一個Feature,什么是Feature我不太清楚,我把它理解成一個文件的集合。輸入名字,我輸入的是Main,點擊OK

image

(如果你看不到上圖中左邊紅框內(nèi)的東西,就在那里的樹狀結(jié)構(gòu)任意節(jié)點點擊右鍵,勾選Show Components就能看到了)

當你把你想打包的東西添加進入過后,一個最基本的包就打好了,已經(jīng)可以編譯執(zhí)行嘗試安裝了。

image

工具欄上的圖標編譯跟執(zhí)行跟VC++6.0的圖標是一樣的吧,第三個紅圈就是卸載

 

當然只做到這一步是不能滿足我的需求的,我還需要添加一個數(shù)據(jù)庫文件夾,在Demo[INSTALLDIR]上點擊右鍵——選擇New Folder——命名為Database

進行圖中操作

image

直接點擊下一步,到第二步,按圖中操作

image

再下一步,將數(shù)據(jù)庫相關(guān)文件都添加進去,當然你可以先添加一個文件(夾)進去,其余的在“Files and Folders”中繼續(xù)添加。

至此,數(shù)據(jù)庫文件也添加到了安裝包內(nèi),不過默認的安裝流程中只有選擇主程序的安裝路徑?jīng)]有選擇數(shù)據(jù)庫的路徑,因此需要手動添加。

方法見2.3

 

2.3 Sequences

大家應(yīng)該都安裝過軟件,最菜的人也知道一路點擊“下一步”來安裝程序。這部分就講一下如何定制安裝的順序,就是“上一步”與“下一步”的跳轉(zhuǎn)。

image

最左邊選擇Custom Actions and Sequences后,在中間的樹中如圖操作,User Interface上點擊右鍵——Insert…

image

點擊OK后Sequences樹中多了個DatabaseFolder,可以拖動他到想要的位置。

當然Sequences的編輯還沒那么簡單,貌似通過拖動無法實現(xiàn),需要對每個窗體進行編輯。

image

如圖所示,圖中的意思就是在選擇DatabaseFolder的路徑的對話框中,點擊“上一步”按鈕會跳轉(zhuǎn)到CustomerInformation這個對話框中

就是這樣編輯,工作量也不小,或者是有其他什么簡便方法,可是我不知道

 

2.4 動態(tài)修改XML或者INI文件

在這個項目中,我需要將項目的安裝路徑寫在安裝目錄下的一個ini文件中,這個ini文件是需要打包在項目中的。

image

首先確保ini文件已經(jīng)添加進入打包工程。

image

在INI File Changes中新建一個與欲改寫的ini文件同名的ini文件——my.ini

在my.ini文件下建立欲改寫的section(我的例子是installdir)以及keyword(例子中是dir),編輯keword

在Data Value中寫入系統(tǒng)變量[INSTALLDIR],這個就表示程序的安裝目錄。如果要獲取數(shù)據(jù)庫的安裝目錄就可以寫入[DATABASEDIR]

XML的修改跟這個類似,相信都可以融會貫通。

在我的實際項目中,遇到個問題。

my.ini是mysql要用到的東西,是放在數(shù)據(jù)庫目錄中的,安裝上面的方法略加修改就可以實現(xiàn)。

但是mysql需要的路徑類似于C:/MyDataBase/MySql/

而通過我上面方法[DATABASEDIR]獲得的路徑是Windows標準的 C:/MyDataBase/MySql/

因此我必須要把這個斜線給反過來,我不知道怎么反。只知道可能通過腳本來修改(如果有高人知道簡便方法,請指點)

腳本見2.5

 

2.5 InstallScript

 

剛剛接觸,我連在哪里寫腳本都不知道,跟別說如何寫腳本了,雖然我現(xiàn)在也不會寫腳本~~(求教?。?/span>

雖然還不會寫腳本,還是先把在哪里寫以及如何運行腳本寫出來,希望有跟我有同樣問題的朋友看到。

image

然后出現(xiàn)下圖

image

右邊是編輯區(qū),用于寫腳本。有編程經(jīng)驗的話這個不難理解

腳本的執(zhí)行回到Custom Actions and Sequences,在中間的列表中的Custom Actions上點擊右鍵,選擇Custom Actions Wizard

在Action Type中選擇Run InstallScript code,在Insert into Sequence中的Install Execute Sequence處選擇何時執(zhí)行,其余按向?qū)崾静僮鳌?/p>

#include "ifx.h"
  
    export prototype ProcessAfterDataMove(HWND);  
    export prototype STRING ReplaceStr(STRING);    
    export prototype RunBat(STRING);

function ProcessAfterDataMove(hMSI)  
   STRING P_Dir,DB_Dir; // P_Dir是主程序目錄下ini文件的路徑,DB_Dir是數(shù)據(jù)庫的路徑
begin            
   P_Dir = TARGETDIR "temp.ini"//TARGETDIR是系統(tǒng)變量,存放安裝路徑
   //GetProfString()函數(shù)是系統(tǒng)函數(shù),用于讀取ini文件中的信息
   //第一個參數(shù)指定文件所在路徑
   //第二個參數(shù)指定section名
   //第三個參數(shù)指定keyword名
   //最后一個參數(shù)用于 返回 前面指定的keyword的值。注意:是返回!  
   GetProfString (P_Dir, "temp""dir", DB_Dir);
   //ReplaceProfString()函數(shù)是系統(tǒng)函數(shù),用于修改ini文件中keyword的值
   //第一個參數(shù)指定文件所在路徑
   //第二個參數(shù)指定section名
   //第三個參數(shù)指定keyword名
   //第四個參數(shù)指定keyword原值
   //第五個參數(shù)指定keyword的新值
   //只有前面4個條件完全匹配時,原值才會被第五個參數(shù)中的新值替換                                                                                         
   ReplaceProfString (DB_Dir + "my.ini""mysqld""basedir""/"" + DB_Dir + "/"""/"" + ReplaceStr(DB_Dir) + "/"");
   ReplaceProfString (DB_Dir + "my.ini""mysqld", "datadir""/"" + DB_Dir + "Data/"", "/"" + ReplaceStr(DB_Dir + "Data") + "/"");
   //執(zhí)行批處理
   RunBat(DB_Dir);
end;  
       
function STRING ReplaceStr(Str)
LIST StrList;
STRING temp,path;
begin
//創(chuàng)建List存放Tokens
   StrList = ListCreate(STRINGLIST);
//分解出Token存入List
   StrGetTokens( StrList, Str, "http://");
   //取出TokenList的頭節(jié)點
   ListGetFirstString(StrList, temp);
   //頭節(jié)點后加入 “/”
   path = temp + "/";
   //循環(huán) 取出所有的節(jié)點 后面加入“/”
   while(ListGetNextString(StrList, temp) = 0)
       path = path + temp + "/";
   endwhile;
return path;   
end;       
       
       
function RunBat(DB_Dir)     //執(zhí)行批處理     
STRING dir;              
begin
dir = DB_Dir + "bin//exec.bat" ;
//調(diào)用其他程序
//第一個參數(shù)是調(diào)用程序的位置
//第二個參數(shù)是調(diào)用程序運行所需參數(shù)
//WAIT表示等到執(zhí)行完畢這個程序,安裝再繼續(xù)進行
LaunchAppAndWait(dir, "",WAIT);
end;


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩在线观看视频| 亚洲一区二区三区精品在线观看| 99香蕉国产精品偷在线观看| 韩国一区二区三区在线观看| 在线视频一区观看| 亚洲美女黄网| 玖玖在线精品| 久久裸体视频| 国产在线视频欧美| 亚洲欧美国产日韩中文字幕| 亚洲图片自拍偷拍| 欧美激情亚洲另类| 亚洲第一综合天堂另类专| 国产精品影院在线观看| 一个人看的www久久| 日韩视频在线观看| 欧美成人免费网| 亚洲第一在线综合网站| 在线精品一区| 另类综合日韩欧美亚洲| 美女露胸一区二区三区| 国产日韩高清一区二区三区在线| 亚洲在线第一页| 欧美一区二区高清在线观看| 国产精品毛片大码女人| 中文精品视频一区二区在线观看| 夜夜狂射影院欧美极品| 欧美日韩高清在线观看| 日韩午夜在线| 亚洲一区免费视频| 国产精品久久久久久久久久妞妞| 中文在线一区| 欧美在线一二三区| 极品尤物久久久av免费看| 久久久亚洲精品一区二区三区 | 在线观看欧美日本| 久久香蕉国产线看观看av| 狼人天天伊人久久| 在线看片成人| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美电影免费| 亚洲黄色高清| 亚洲夜间福利| 国产一区二区三区久久| 久久这里只精品最新地址| 欧美激情精品久久久久久黑人| 精品99一区二区三区| 久久综合给合久久狠狠狠97色69| 亚洲国产高清自拍| 亚洲一区二区黄| 国产一区二区三区免费在线观看| 久久久久99精品国产片| 亚洲高清色综合| 亚洲男人第一网站| 伊人成年综合电影网| 欧美日韩国产黄| 西西裸体人体做爰大胆久久久| 老鸭窝毛片一区二区三区| 99精品国产热久久91蜜凸| 国产毛片一区| 欧美mv日韩mv国产网站app| 洋洋av久久久久久久一区| 久久久精品午夜少妇| 日韩天堂av| 国产日本欧美视频| 欧美高清视频一区二区三区在线观看| 一区二区欧美精品| 欧美成人精品不卡视频在线观看| 亚洲尤物视频在线| 亚洲人在线视频| 国产日韩一区在线| 欧美高清在线一区二区| 久久国产精品久久久久久| 亚洲剧情一区二区| 久久在精品线影院精品国产| 亚洲一区三区电影在线观看| 亚洲国产成人porn| 国产一区二区日韩| 国产精品jvid在线观看蜜臀| 久久久久久免费| 亚洲欧美一区二区三区极速播放| 亚洲高清一二三区| 久久久国产精品一区| 亚洲综合欧美| 一本色道久久综合亚洲精品婷婷| 亚洲成人影音| 国内成人自拍视频| 国产精品国产三级国产aⅴ浪潮| 免费观看亚洲视频大全| 欧美在线不卡视频| 亚洲欧美变态国产另类| 夜夜爽www精品| 亚洲激情社区| 欧美激情精品久久久久久变态| 久久免费视频一区| 久久久精品999| 欧美在线视频免费观看| 亚洲中字黄色| 亚洲一区在线视频| 亚洲综合国产激情另类一区| 亚洲午夜性刺激影院| 日韩一区二区电影网| 亚洲国产午夜| 亚洲国产一区二区a毛片| 伊人激情综合| 1769国产精品| 亚洲国产精品t66y| 亚洲激情一区二区三区| 亚洲高清在线| 亚洲每日更新| 一区二区三区日韩精品视频| 一本大道久久a久久精品综合| 日韩小视频在线观看| 一本大道久久a久久综合婷婷| 亚洲精品在线观看视频| 99视频精品在线| 亚洲视频在线一区观看| 午夜精品久久久久久久99水蜜桃 | 欧美有码在线观看视频| 欧美一区二区性| 久久激情婷婷| 久久亚洲美女| 欧美福利网址| 一本在线高清不卡dvd| 亚洲一区3d动漫同人无遮挡| 亚洲欧美激情视频| 久久久91精品| 欧美激情视频在线免费观看 欧美视频免费一| 欧美国产综合视频| 欧美日韩中文字幕精品| 国产伦理精品不卡| 韩国成人理伦片免费播放| 亚洲国产精品传媒在线观看| 亚洲精品一区二区三区樱花| 亚洲性图久久| 麻豆精品在线视频| 亚洲美女诱惑| 久久大香伊蕉在人线观看热2| 免费日韩av| 国产精品久久久久久久久久久久久久 | 亚洲伊人网站| 久久久久99| 欧美午夜不卡视频| 国产精品一区在线观看你懂的| 精品不卡一区| 亚洲小少妇裸体bbw| 久久久91精品国产一区二区三区| 亚洲国产成人91精品| 亚洲欧美日韩精品久久亚洲区| 久久亚洲视频| 国产精品福利影院| 亚洲国产日韩欧美在线99 | 蜜臀91精品一区二区三区| 91久久中文字幕| 性感少妇一区| 欧美日韩一区二区国产| 黄色国产精品| 午夜精品久久久久久久久久久久 | 91久久香蕉国产日韩欧美9色| 欧美一级日韩一级| 欧美日韩国产一区| 在线观看91精品国产麻豆| 亚洲自拍偷拍麻豆| 欧美黄色一区| 久久久7777| 国产日韩在线看| 亚洲欧美视频一区| 亚洲精品一区在线| 久热这里只精品99re8久| 国产欧美婷婷中文| 亚洲在线观看免费视频| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美日韩一区国产| 国内精品久久久| 午夜精品久久久久久久白皮肤| 亚洲黄色天堂| 麻豆成人在线观看| 国产一区二区日韩| 欧美一二三视频| 亚洲少妇中出一区| 欧美三级日韩三级国产三级| 亚洲美女黄色| 亚洲国产视频直播| 欧美高清视频www夜色资源网| 有码中文亚洲精品| 久久综合九色综合欧美就去吻| 亚洲欧美日本国产专区一区| 欧美日韩中文精品| 亚洲一二三区精品| 这里只有精品丝袜| 欧美日韩第一区日日骚| 亚洲毛片在线| 亚洲精品国产系列| 欧美日韩午夜在线视频| 一区二区三区视频在线看| 亚洲欧洲午夜| 欧美精选午夜久久久乱码6080| 亚洲精品在线观| 99热免费精品在线观看| 国产精品chinese|