2012-11-28 30 views
0

我們有一個構建腳本,它構建三種類型的項目 - C++,Java,最後是相應的InstallShield安裝程序。InstallShield是否可以在構建時在部分源文件路徑中使用環境變量?

現在安裝程序構建腳本依賴於C++項目始終構建在發佈配置中的事實。

但現在我希望允許他們在一個額外的配置,即配置文件。

我們使用的是Jenkins CI服務器,因此通過專用的Jenkins構建參數DRIVER_PROXY_CONFIG提供了所需的配置,該配置顯示爲具有相同名稱的環境變量。

現在的問題。根據我們的InstallShield傢伙,IS不能在源文件路徑的一部分中使用環境變量。我引述:

您可以使用或「環境變量」或「用戶定義的路徑變量 通過的InstallShield定義」作爲文件路徑。

,所以我們可以:

  1. 創建每個組件的「環境變量」(因爲「DRIVER_PROXY_CONFIG」是組件路徑的唯一部分) - 不可取。
  2. 將組件'用戶定義的路徑變量'作爲'環境變量'的一部分 - 不可能,我剛剛嘗試過。

有沒有人做過類似的事情?安裝程序依賴於不同位置的多個源文件,其中這樣的位置路徑的一部分是環境變量DRIVER_PROXY_CONFIG的值。請注意,這部分既不是路徑前綴也不是後綴。

回答

1

您絕對可以將它創建爲路徑的一部分。一些確切的行爲取決於InstallShield的版本,但對於最後幾個,您甚至可以使用相對的父目錄。只需進入Path Variables視圖,添加一個新的環境路徑變量(如Env),並設置它引用的環境變量。然後,添加任意數量的標準路徑變量(如Stn),這些變量的定義爲<Env>\Sub\Dir,或者跳過此步驟並僅引用相關文件的ISBuildSourcePath。通常,從定義的路徑變量下的路徑添加文件將使用該路徑變量作爲其路徑的一部分。

如果您已經添加的文件,在轉換源路徑向導可幫助在這裏,但你可能會發現很容易就可以直接訪問文件表更新ISBuildSourcePath

但至少有一個例外。如果您的環境變量的值爲Sub,並且您的完整目錄名稱爲SubDirectory,則不能始終引用<Env>Directory。通常情況下,路徑變量支持將把它變成Sub\Directory

+0

代表吉拉德:如果'env'不是路徑的前綴或後綴(「SomeDir \ \ SubDir」)會怎麼樣? 我已創建系統的env配置=釋放 我已經建立IS變量「MyConf」引用將env「配置」 我已經建立IS標準路徑mypath中=「SomeDir \ \子目錄」 如果我從該添加文件路徑 - IS不會建議'MyPath'爲建議路徑! 我發現的唯一方法是添加文件,然後直接訪問File表以更新ISBuildSourcePath。 – mark

+0

哦,如果問題是使用它作爲路徑的中間,我將不得不再次檢查。在光明的一面,聽起來像修改File表是一種解決方法,但當你不必考慮正確地做事時總是最好的。 –

+0

我們沒有找到在路徑中間使用它的方法。讓生活變得毫無用處。 – mark

2

邁克爾:

如果 'ENV' 沒有前綴也沒有路("SomeDir\<env>\SubDir")的後綴是什麼?

我已經創建了系統ENV config=release
我已經創建的變量「MyConf」引用的ENV「配置」
我已經創建的標準路徑MyPath = "SomeDir\<MyConf>\SubDir"

如果我從這個路徑添加文件 - IS不會建議'MyPath'爲建議路徑!

我發現的唯一方法是添加文件,然後直接訪問File表以更新ISBuildSourcePath。

+0

+1歡迎來到SO,吉拉德。你可以問我給Michael寫評論:-) – mark

+0

沒有想過:) – gilad

0

我加入了環境變量路徑變量,ytou可以在這裏設置環境變量類型

那麼你可以使用任何地方,你會使用一個路徑變量(不是字符串類型!) - 儘管我確實有用方括號括起來,而不是通常的角度)。它應該在路徑中間工作,正如我用普通路徑變量所做的那樣。

相關問題