2017-01-12 59 views
0

我對Wix相當陌生。基於產品代碼上的安裝目錄

我開始用這個例子:

https://helgeklein.com/blog/2014/09/real-world-example-wix-msi-application-installer/

他有想出INSTALLDIR,使用變量(實際上,本地信息,如下圖所示),在計算程序。

<!-- All folders from here on are relative to their parent. --> 

<Directory Id="ProgramFilesHK" Name="!(loc.ManufacturerName)"> 

    <!-- INSTALLDIR is a property name. We need it later for the UI (to be able to change the install dir. --> 
    <Directory Id="INSTALLDIR" Name="!(loc.ApplicationName)"> 

這(在本例中)解析爲:

C:\ Program Files文件(x86)的\赫爾格·克萊\ uberAgent \

我想使ProductCode成爲所有嵌套子文件夾的(最後一個)子文件夾。

阿卡,我想:

C:\ Program Files文件(x86)的\赫爾格·克萊\ {22222222-2222-2222-2222-222222222222} \

我發現這一點:

Obtaining generated ProductCode as a variable in Wix

所以我嘗試將代碼更改爲:

 <!-- INSTALLDIR is a property name. We need it later for the UI (to be able to change the install dir. --> 
     <Directory Id="INSTALLDIR" Name="[PRODUCTCODE]"> 

 <Directory Id="INSTALLDIR" Name="[ProductCode]"> 

不幸的是,這給了我

C:\Program Files (x86)\Apps\CCT\[ProductCode]\ 

而不是實際的產品代碼

我爲什麼要做這個的GUID值?

我做實例安裝,並

<Property Id="INSTANCEID" Value="0"/> 
    <InstanceTransforms Property="INSTANCEID"> 
    <Instance Id="I01" ProductCode="{22222222-2222-2222-2222-222222222222}" ProductName="My Product 01"/> 
    <Instance Id="I02" ProductCode="{33333333-3333-4f1a-9E88-874745E9224C}" ProductName="My Product 02"/> 
    <Instance Id="I03" ProductCode="{44444444-4444-5494-843B-BC07BBC022DB}" ProductName="My Product 03"/> 
    </InstanceTransforms> 

和本文

http://ysdevlog.blogspot.com/2011/08/revisited-multiple-instance.html

這樣說:

對於文件數據,這意味着安裝的文件每個實例到 不同的位置 - 包含inst的路徑ance ID作爲其一部分 最合適。

如何在此「計算」安裝目錄邏輯中「獲取」ProductCode?

謝謝。

不可用標籤:Wix version 3。10

關於重複問題「標記」的注意事項。

這與Wix Installer - Create Folder hierarchy based on Property不一樣,因爲那裏的宏值實際上已經解決了。

這裏的問題是宏值無法解析。

+0

[維克斯安裝程序 - 基於屬性創建文件夾層次]的可能的複製(http://stackoverflow.com/questions/12478566/wix-installer-創建文件夾層次爲基礎的財產) –

+0

我添加了一個評論,如何其他問題不是重複的。 – granadaCoder

+0

也許使用自定義操作更新INSTALLDIR與[ProductCode] – mcdon

回答

0

你可以添加到你的wxs,看看是否有用?

<CustomAction Id="SetInstallDir" Property="INSTALLDIR" 
       Value="[PRODUCTCODE]" 
       Execute="firstSequence" /> 

而且<InstallExecuteSequence>標籤內:

<Custom Action="SetInstallDir" Before="CostFinalize">INSTALLDIR=""</Custom> 
+0

有機會嘗試此操作嗎?做了這項工作? – Isaiah4110