VC++打包(InstallShield)

來源:互聯網
上載者:User

1 首先將完成的程式產生release,然後點Tools-->InstallShield Wizard,(如果沒有該選項,可以找到VC6.0的安裝盤,找到ISHIELD檔案,setup.exe即可安裝 InstallShield ),即進入InstallShield 使用介面。

2 下面介紹使用InstallShield

一、在左面的選項中選擇Scripts。  
   
    這是全部製作的核心部分,也是我們所最應集中精力攻克的小小關口。當然不更改Scripts中的來源程式也能製作一個標準的安裝程式,但如果能夠控制Scripts的編程,整個安裝程式的製作水準就可以達到一個新的高度,這也許是您與普通製作者區別的開始吧。其實InstallShield的Scripts非常類似於C和C++的程式編寫,相信對大多數程式員來說是非常容易掌握的。而對於沒有什麼C和C++的基礎的朋友來講,看完這篇文章後,相信你也能很好地去製作自己的Scripts,因為它具有相當程度的重複性,更容易被依葫蘆畫瓢。  
   
    Scripts的布局同C語言非常類似。首先是標頭檔的包含,緊接著是字串的定義、函數原形的說明、全域變數的說明。你可以做的是在此加上你的函數說明、全域變數的說明。  
   
    Scripts中遵循C的規則,同樣有局部變數和定義。遵循C++的注釋規則,可以用//   注釋內容來進行單行注釋,也可以用/*   注釋內容   */來注釋一塊語句。所有的關鍵字、宏定義都以不同顏色的字型標出,非常直觀。Scripts   的編程遵循結構化編程的思想,提供了大量類似Windows   API的函數庫供調用,每個宏定義都有詳細的說明,每個函數除了詳細地說明,解釋每個變數的意義外,還都附有相應的例子,參考這些說明和例子,可以讓新手在非常短的時間內上路。對用VC++開發過Windows程式的朋友來講,簡直就是一種6=2×3的轉變而已,可以非常輕鬆地掌握。  
   
    在程式的最前段,是program…………………endprogram,它相當於C中的main()   {……}主函數。後面是一個個子函數體的程式,排列順序是按調用順序排列。全部函數都非常簡單易懂,並且一般不需太大改動。下面將幾個常用、經常改動的函數加以說明。  
   
    (1)   function   SetupFolders()  
   
    function   SetupFolders()  
   
    NUMBER   nResult;  
   
    STRING   szFolderDir;  
   
    begin  
   
    szProgramFolder   =   FOLDER_PROGRAMS^    
   
    SHELL_OBJECT_FOLDER;   //建立程式組或捷徑的位置  
   
  szItemName   =   "眼部圖象多功能處理系統";   //應用程式名稱  
   
  szProgram   =   TARGETDIR^'eye95.exe';   //可執行檔名  
   
  szParam   =   "";  
   
    LongPathToQuote   (szProgram,   TRUE);//合并路徑  
   
    LongPathToShortPath   (szParam);//轉為短路徑,專為Win31和WinNT3.5而用  
   
    szCommandLine   =   szProgram   +   "   "   +   szParam;   //產生命令列  
   
    szWorkingDir   =   TARGETDIR;//工作路徑  
   
    szIconPath   =   "";  
   
    nIcon   =   0;  
   
    szShortCutKey   =   "";  
   
    nFlag   =   REPLACE;  
   
    AddFolderIcon   (szProgramFolder,   szItemName,    
   
    szCommandLine,  
   
    szWorkingDir,   szIconPath,   nIcon,  
   
    szShortCutKey,   nFlag);  
   
    szProgramFolder   =   FOLDER_DESKTOP;  
   
    LongPathToQuote(szCommandLine,   TRUE);  
   
  if(SprintfBox(   OK|CANCEL,"請選擇:","%s","你想在案頭上建立捷徑嗎?")==6)    
   
    then  
   
    AddFolderIcon(szProgramFolder,szItemName,szCommand  
   
    Line,    
   
    szWorkingDir,szIconPath,nIcon,szShortCutKey,    
   
    nFlag);  
   
  endif;  
   
  szProgramFolder   =   FOLDER_PROGRAMS^   SHELL_OBJECT_FOLDER;  
   
  szItemName="readme";  
   
  szProgram   =   WINDIR   ^   "notepad.exe";  
   
  szParam   =   TARGETDIR^"readme.txt";  
   
  LongPathToQuote   (szProgram,   TRUE);  
   
  LongPathToShortPath   (szParam);  
   
  szCommandLine   =   szProgram   +   "   "   +   szParam;  
   
  AddFolderIcon(szProgramFolder,szItemName,    
   
    szCommandLine   ,  
   
    szWorkingDir,   szIconPath,   0,  
   
    szShortCutKey,nFlag   );  
   
    nResult   =   CreateShellObjects(   ""   );  
   
    return   nResult;  
   
    end;  
   
    其實這段程式說白了是對AddFolderIcon的一個應用而已。應用AddFolderIcon來在開始選單中添加程式組、程式項或在案頭案頭添加捷徑等等。所以首先讀一下AddFolderIcon的說明非常必要。它共有八個入口參數。第一個參數szProgramFolder是確定要在Win95中添加選單的位置(路徑),例如  
   
    "C:/WINDOWS/STARTMENU/PROGRAMS/ACCESSORIES/GAMES"。  
   
    而在Windows95和WinNT4.0中,還可以用系統的宏定義:FOLDER_DESKTOP(添加在案頭上)、FOLDER_DESKTOP(添加在開始選單中)、FOLDER_PROGRAMS(添加在開始-〉程式選單中)等。第二個參數為szItemName,即添加的表徵圖的名稱(應用程式的名稱)。第三個參數szCommandLine相對繁瑣一些。它為了指定可執行程式和它的命令列,或者在子目錄下的全路徑(僅適用於Windows95&winNT4.0)。szWorkingDir為工作路徑,可為空白:“”,或為TARGETDIR(目標路徑)。szIconPath為表徵圖路徑,一般設為空白:“”。nIcon為表徵圖序數,即若應用程式有若干個表徵圖,想顯示那個,依次為0,1,2……。  
   
    szShortCutKey用來定義快速鍵。nFlag用來指定表徵圖的外觀。如果在路徑中包含長路徑名,則必需用   ‘’或“”   來包含,然後用LongPathToQuote函數來合并。當用於16位的Win31和WinNT3.5時,還應再調用一下LongPathToShortPath進行轉換。如此便可建立程式組、程式項或捷徑了。太麻煩了?沒關係,如果您認為這一段操作實在麻煩,您完全可以略過,到Resource中去完成,詳情請往後看。  
   
    (2)function   SetupScreen()  
   
    begin  
   
    Enable(   FULLWINDOWMODE   );  
   
    Enable(   INDVFILESTATUS   );  
   
    SetTitle(   "眼科多功能處理系統安裝程式",   28,YELLOW   );//修改字型和顏色  
   
    SetTitle(   "眼科多功能處理系統",   0,   BACKGROUNDCAPTION   );   //   標題列的字型和顏色  
   
    Enable(   BACKGROUND   );  
   
    Delay(   1   );  
   
    end;  
   
    這兒主要是SetTitle   (szString,   nPointSize,   nColor)函數的應用。  
   
    三個參數分別代表了所寫字串的內容、字型大小、文字顏色。  
   
    (3)function   DialogShowSdWelcome()  
   
    NUMBER   nResult;  
   
    STRING   szTitle,   szMsg;  
   
    begin  
   
    szTitle   =   "歡迎";  
   
    szMsg   =   "歡迎您光臨   眼科多功能處理系統   安裝程式!";  
   
    nResult   =   SdWelcome(   szTitle,   szMsg   );  
   
    return   nResult;  
   
    end;  
   
    在這個函數裡寫入您想製作程式的標題。  
   
    (4)function   SetupRegistry()  
   
    NUMBER   nResult;  
   
  STRING   szKey,   szNumName,   szNumValue,   svNumValue;  
   
    NUMBER   nType,   nSize;  
   
    begin  
   
    szKey="Robert/RobertSoftware/Spirit/Version";//自己的主鍵  
   
    szNumName   =   "TestValue";//鍵名  
   
    szNumValue   =   "12345";//索引值  
   
    nType   =   REGDB_NUMBER;//類型  
   
    nSize   =   -1;//指定大小  
   
    RegDBSetKeyValueEx(szKey,   szNumName,   nType,   szNumValue,nSize)   ;//建立  
   
    nResult   =   CreateRegistrySet(   ""   );  
   
    return   nResult;  
   
    end;  
   
    通過這種方法修改註冊表,再輔以一些演算法,可以投入很小但起到很好的加密程式的作用,您不妨一試!   ?  
   
    (5)function   DialogShowSdFinishReboot()  
   
    NUMBER   nResult,   nDefOptions;  
   
    STRING   szTitle,   szMsg1,   szMsg2,   szOption1,   szOption2;  
   
    NUMBER   bOpt1,   bOpt2;begin  
   
    if   (!BATCH_INSTALL)   then  
   
       bOpt1   =   FALSE;//不選  
   
       bOpt2   =   FALSE;//不選  
   
       szMsg1   =   "%P   安裝結束!   ";//%P代表安裝程式名字。  
   
  szMsg2   =   "按結束鍵結束   %p   安裝。";//提示資訊  
   
  szOption1   =   "我想看讀我檔案。";  
   
       szOption2   =   "我想現在就運行程式。";  
   
       nResult   =   SdFinish(   szTitle,   szMsg1,   szMsg2,    
   
    szOption1,   szOption2,   bOpt1,   bOpt2   );  
   
  if(bOpt1)   then  
   
       LaunchAppAndWait(WINDIR^"Notepad.exe",TARGETDIR^"readme.txt",WAIT);//如果選中,調用Windows的筆記本載入讀我檔案。  
   
    endif;   if(bOpt2)   then  
   
       LaunchApp(TARGETDIR^'eye95.exe',"");//如選中,立刻執行應用程式  
   
    endif;  
   
       return   0;  
   
    endif;  
   
    nDefOptions   =   SYS_BOOTMACHINE;  
   
    szTitle   =   "";  
   
    szMsg1   =   "";  
   
    szMsg2   =   "";  
   
    nResult   =   SdFinishReboot(   szTitle,   szMsg1,    
   
    nDefOptions,   szMsg2,   0   );//由此控制決定是否重新啟動電腦。  
   
    return   nResult;  
   
    end;  
   
    這一段程式便是安裝到最後,可以提示使用者是否看讀我檔案、是否立刻啟動程式運行、是否重新啟動電腦。  
   
    Scripts最需要改動的地方可能就是這五個地方。其它則根據製作者自己的需要來做相應修改。

 ******需要注意一點,每次修改完後都要編譯(complie)無誤,否則將不能實現預期功能。   
    
    二、修改File   Groups  
   
    雙擊相應的Examples   Files、Help   Files、Program   DLLs、Program   Executable   Files、Shared   Dlls,在相應的Links中,單擊右鍵,可以插入一組檔案、一個檔案夾或一個檔案。而在Examples   Files、Help   Files、Program   DLLs、Program   Executable   Files、Shared   Dlls中分別加入檔案是為了在程式安裝時的選項安裝。更為簡便的方法是在Tools中啟動Launch   Explorer,然後把所需的檔案或檔案夾拖拉到右面空白處即可。  
三、修改Components  
   
    單擊Program   Files、Example   Files、Help   Files或Shared   Dlls,在右面的表格中雙擊Include   File   Groups,在彈出的屬性對話方塊裡單擊Add…,加入相應的檔案組。  
   
    四、修改Setup   Types  
   
    單擊Compact、Typical或Custom,在右面的表格中選擇各自包括的組成成份。  
   
    註:有了二、三、四項的操作,才能完成安裝時的典型安裝、簡潔安裝和定製安裝的選擇。  
   
    五、修改Setup   Files  
   
    在Splash   Screen-〉Language   Independent中你會發現一個Setup.bmp檔案,這個是系統提供給你的安裝開始時的閃爍畫面。你可以用你的封面替代這個setup.bmp。在Language   Independent-〉Operating   System   Independent中,你會發現license.txt和infolist.txt。你可以將你的應用程式的說明、著作權資訊寫入相應檔案。  
   
    六、修改Resource  
   
    在Register   Entires中,你可以添加你的索引值。對Register   Entires單擊滑鼠右鍵,單擊New   Entry,便可在右面的Register   Set中加入自己的索引值。  
   
    在Shell   Objects中,有Explorer   Shell和Program   Manager   Shell兩個分類,分別是為了windows95、WinNT4.0和win31、winNT3.5設計的。在Explorer   Shell中,又有Desktop、Start   Menu、Programs、Startup的層次之分。你可以在任一層單擊右鍵,插入您所需要加的捷徑或檔案夾。  
   
    單擊捷徑或檔案夾,雙擊右面的表格選項,依次填入空白項,那麼在您理想的目的地的檔案夾或捷徑便建好了。不要著急去按下Run   Setup工具按鈕,否則您會發現您運行後得到的並不完全是您所設計的!這是因為您少了:  
   
    七、運行Media   Wizard  
   
    在Media欄,單擊Media   Build   Wizard,按照提示一步一步執行,直至結束(而實際上您僅需連續按“下一步”按鈕)。您完全可以再此基礎上加上更多的更精彩的小花招,如:加密、安裝拷貝時的不同的背景變換、製成一個自解包的安裝檔案、做一個帶時間限制的試用版安裝等等,InstallShield都可以滿足您的需要。但這些小花招,基本都需要您對Scripts的熟練掌握,這些都是用簡潔方式所不能控制的。  
   
    好了,您可以Run   Setup了。怎麼樣?夠不夠專業?酷不酷?可不要把嘴樂歪了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.