2011-08-02 65 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目錄。 –