在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 的 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 界面,这两种方法都无法直接添加相对路径。

要想使用相对路径,必须先将文件保存到 InstallShield 项目所在的文件夹,然后以绝对路径的方式添加文件,最后再修改成相对路径。

我们以在 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 文件的信息,修改改行即可将 test.txt 文件的绝对路径修改为相对路径。

但是,不是直接用<ISProjectFolder>来替代C:\Users\zzs\Desktop\VV\BPLLQ\VS2010_CSHARP浏览器\Setup1,否则,再次打开vs时,就会报错,大致内容是“td中出现意外元素”,它所说的意外元素就是<ISProjectFolder>

原因自然是<ISProjectFolder>被当做了 xml 格式的一部分,所以才会被 xml 中的 td 识别为元素。正确的方法是按照 xml 的格式来书写,使它和文件路径一样,仅仅是一串字符串。

按照 xml 的语法,我们应该将<ISProjectFolder>的尖括号用转义符代替,即,分别用&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 文件的路径就显示为了相对路径,这时候就不用担心项目文件夹移动到其它目录下引起的“文件找不到”的错误了。

这里写图片描述

至此,相对路径修改完毕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章