2011-08-02 69 views

回答

17

您可以使用<path variables>see documentation)您的所有文件都指向比较他们。
另见this blog post

+1

请参阅下面@bvj提供的答案,该答案应被标记为完整性的正确答案。 –

+0

@Dror它可以与InstallShield限量版一起使用吗? – Eldho

+0

@埃尔霍,不知道 - 检查这个问题:http://stackoverflow.com/questions/15390098/installshield-le-relative-paths-to-file – Dror

0

当你添加的文件,你应该尝试有它是相对的InstallShield项目文件。如果将.ism文件保存在源代码树中,那么您添加的任何可执行文件都应该具有相对于该文件的路径。

12

<ISProjectFolder>是包含安装盾构工程目录中的宏。

(有此页面上的答案要容易得多......)

+1

只是为了确保人们不会怀疑何时直接编辑项目文件(.isl),您需要使用< and >的转义符号。实际变量是 <ISProjectFolder> –

+0

谢谢..这是我想要的。 – Abhishek

4
  • 文件内容相对固定的路径,通过安装屏蔽限量版的输出目录(的Visual Studio 2012) 步骤被复制:
  • 展开您安装在Solution Explorer中的项目,所以你看到的1,2,3,4,5,6部分
  • 展开“2”和“文件” 双击你会看到一个四分屏页面:使用“源计算机文件”和“目标计算机文件”
  • 删除硬编码的路径和文件从“目标计算机中的文件”
  • 单击顶部左侧面板,上有您的文件为“内容文件”
  • 右上方面板将显示“内容文件的项目从MyProject的”
  • 点击并拖动这个到右下方面板(以下简称‘目标计算机中的文件’)

返回到您的项目,并确保你想要复制具有属性的所有文件: 生成操作=内容 和 复制到直接输出ORY =复制始终

+0

比编辑项目文件好得多;构建行动=内容是我错过了。请注意,如果安装程序包含不需要的文件,请检查其生成操作是否设置为“无”。您可以通过右键单击 - >在“MyProject.Content文件”条目中解析项目输出来查看哪些文件将被复制。 – personne3000

1

这里是我的解决方案,如果你的 “源文件” 的磁盘partion不一样<ISProjectFolder>:

  1. 打开的InstallShield脚本文件(* .isl)用记事本;
  2. 知道的预定义变量“<VSSolutionFoler>”,这是你的安装解决方案文件夹
  3. 的文件夹替换文件(S)的绝对路径为相对路径“解决方案foler”。即& LT; VSSolutionFolder & GT; .. \ .. \ EXE \释放\程序myapp.exe
29

使用InstallShield的自由VS限定版,设置自定义路径看起来不可能的。因此只需要几个预定义的路径选项就可能需要攻击ISL文件。

以下是预定义的路径变量我在2013年的快速文档中发现:(在错别字的情况下确认)

Predefined Path        Variable Value      InstallScript Path Variable 
    -------------------------------------------------------------------------------------------------------------- 
    <ProgramFilesFolder>       C:\Program Files\     <PROGRAMFILES> 
    <CommonFilesFolder>       C:\Program Files\Common Files\  <COMMONFILES> 
    <WindowsFolder>        C:\Windows\       <WINDIR> 
    <SystemFolder>        C:\Windows\System32\     <WINSYSDIR> 
    <ISProjectFolder>       C:\InstallShield 2013 Projects\  
    <ISProjectDataFolder>      <ISProjectFolder>\ProjectName  <ISPROJECTDIR> 
    <ISProductFolder>       C:\Program Files\InstallShield\2013 
    <ISRedistPlatformDependentFolder>   C:\Program Files\InstallShield\2013\ 
                .\Redist\Language Independent\i386 
    <ISRedistPlatformDependentExpressFolder>  C:\Program Files\InstallShield\2013\ 
                .\Redist\Language Independent\ 
                .\i386 Express 

我的VS解决方案包括一个Outlook外接程序和一个InstallShield LE安装项目。虽然InstallShield包含AddIn生成的输出和相关程序集,但是不包括清单文件和vsto文件。所以我需要分别指定这些。这适用于一个工作站;然而,共享该解决方案的另一台工作站具有不同的源目录结构,导致未解决的问题。

清单和vsto文件由InstallShield添加了绝对路径。所有工作站通用的符号链接可能已经解决了这个问题,但我决定破解ISL文件以查看是否可以使用相对路径实现ISL文件将来可能需要维护盗版

为了获得共同的父目录(即我的情况下解决方案目录,)我指定的ISL在<表名称列出的特殊器物以下两个父选择(.. \ ..)= “文件”>

...<td>&lt;ISPROJECTDIR&gt;..\..\MyProject\bin\Release\... 

其中HTML实体被用于周围低于/大于所述<ISPROJECTDIR>变量的符号。

我跑使用代替<ISPROJECTDIR><ISPROJECTFOLDER>可变的第二测试(其应该是第一)。在这个测试中,只有一位家长选择是必要的:

...<td>&lt;ISPROJECTFOLDER&gt;..\MyProject\bin\Release\... 

到目前为止,事情似乎被正确解析,但是你相对可能会有所不同。

+6

这是我找到的最佳解决方案,尤其是当您添加不属于该项目的文件时。我正在使用相关变量(替换为<<和>和>),而不是.sln目录。 –