1. 程式人生 > >在 InstallShield 中使用相對路徑新增 application files

在 InstallShield 中使用相對路徑新增 application files

系統環境

  • InstallShield 版本:InstallShield 2015 Limited Edition for Microsoft Visual Studio 2010, 2012, 2013 and 2015
  • Visual Studio 版本:Visual Studio 2010 專業版 SP1

相對路徑設定方法

相對路徑的表示方法

在 project assistant 中設定安裝包時,InstallShield 在 application information 步驟中使用了相對路徑:

這裡寫圖片描述

所新增的圖示的絕對路徑是:

C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP瀏覽器\Setup1\程式所需的其它檔案\image

可是現實出來卻是:

<ISProjectFolder>\程式所需的其它檔案\image\main.ico

其中<ISProjectFolder>所替代的那部分路徑,也正是我們建立 InstallShield 專案時,選擇的路徑,即<ISProjectFolder>是 InstallShield 專案所在的資料夾。

將檔案的絕對路徑修改為相對路徑

向安裝包中新增檔案有兩種方法,一個是 project assistant 中的 application files 介面,另一個是 specify application data 中的 files 介面,這兩種方法都無法直接新增相對路徑。

要想使用相對路徑,必須先以絕對路徑的方式新增檔案,然後再修改成相對路徑。

我們以在 files 介面中新增C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP瀏覽器\Setup1\程式所需的其它檔案\test.txt檔案為例。

新增之後,可以在 link to 列看到 test.txt 檔案的絕對路徑。

這裡寫圖片描述

接下來,我們關閉vs2010,開始修改路徑。

用記事本開啟 InstallShield 專案所在的資料夾下的 isl 格式的檔案,此例中的檔案為C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP瀏覽器\Setup1\Setup1.isl

開啟後可以看出,該 isl 檔案內容是 xml 格式。我們新增的檔案全都寫在<table name="File">元素中,內容如下:

<table name="File">
        <col key="yes" def="s72">File</col>
        <col def="s72">Component_</col>
        <col def="s255">FileName</col>
        <col def="i4">FileSize</col>
        <col def="S72">Version</col>
        <col def="S20">Language</col>
        <col def="I2">Attributes</col>
        <col def="i2">Sequence</col>
        <col def="S255">ISBuildSourcePath</col>
        <col def="I4">ISAttributes</col>
        <col def="S72">ISComponentSubFolder_</col>
        <row><td>File</td><td>Component</td><td>cs_fxb_win_hook.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;cs_fxb_win_hook&gt;|Built</td><td>3</td><td/></row>
        <row><td>File1</td><td>Component1</td><td>set_ini.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;set_ini&gt;|Built</td><td>3</td><td/></row>
        <row><td>File2</td><td>Component2</td><td>KeyBoardHook.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;KeyBoardHook&gt;|Built</td><td>3</td><td/></row>
        <row><td>File3</td><td>Component4</td><td>dis_cad_dll.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;dis_cad_dll&gt;|Built</td><td>3</td><td/></row>
        <row><td>File4</td><td>Component5</td><td>MouseHook.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;MouseHook&gt;|Built</td><td>3</td><td/></row>
        <row><td>File5</td><td>Component6</td><td>dis_start.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;dis_start&gt;|Built</td><td>3</td><td/></row>
        <row><td>disable_the_accessibility_sh</td><td>Component3</td><td>Disable_the_Accessibility_Shortcut_Keys.主輸出</td><td>0</td><td/><td/><td>0</td><td>1</td><td>&lt;Disable_the_Accessibility_Shortcut_Keys&gt;|Built</td><td>3</td><td/></row>
        <row><td>main.ico</td><td>ISX_DEFAULTCOMPONENT2</td><td>main.ico</td><td>0</td><td/><td/><td/><td>1</td><td>&lt;ISProjectFolder&gt;\程式所需的其它檔案\image\main.ico</td><td>1</td><td/></row>
        <row><td>no_mainurl.html</td><td>ISX_DEFAULTCOMPONENT1</td><td>NOMAIN~1.HTM|no mainURL.html</td><td>0</td><td/><td/><td/><td>1</td><td>&lt;ISProjectFolder&gt;\程式所需的其它檔案\error page\no mainURL.html</td><td>1</td><td/></row>
        <row><td>set.ini</td><td>ISX_DEFAULTCOMPONENT</td><td>set.ini</td><td>0</td><td/><td/><td/><td>1</td><td>&lt;ISProjectFolder&gt;\程式所需的其它檔案\set.ini</td><td>1</td><td/></row>
        <row><td>test.txt</td><td>ISX_DEFAULTCOMPONENT</td><td>test.txt</td><td>0</td><td/><td/><td/><td>1</td><td>C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP瀏覽器\Setup1\程式所需的其它檔案\test.txt</td><td>1</td><td/></row>
    </table>

可見我們只要修改倒數第二行中的內容,即可將 test.txt 檔案的絕對路徑修改為相對路徑。

但是,不是直接用<ISProjectFolder>來替代C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP瀏覽器\Setup1,否則,再次開啟vs時,就會報錯,大致內容是“td中出現意外元素”,它所說的意外元素就是<ISProjectFolder>

從InstallShield 在 application information 步驟中顯示相對路徑的方式可以看出,<ISProjectFolder>是檔案路徑的一部分,此時卻將<ISProjectFolder>當做 xml 格式的一部分了。

按照 xml 的語法,我們在使用尖括號時,應該用轉義符代替,即,分別用&lt;&gt;,來代替<>

所以,倒數第二行修改後應該變成:

<row><td>test.txt</td><td>ISX_DEFAULTCOMPONENT</td><td>test.txt</td><td>0</td><td/><td/><td/><td>1</td><td>&lt;ISProjectFolder&gt;\程式所需的其它檔案\test.txt</td><td>1</td><td/></row>

修改好後,儲存並關閉檔案,重新開啟vs,test.txt 檔案的路徑就顯示為了相對路徑,這時候就不用擔心資料夾移動到其它目錄下引起的“檔案找不到”的錯誤了。

這裡寫圖片描述

至此,相對路徑修改完畢。