我剛剛纔...有點麻煩,但這樣很好的工作...
我修改TARGETDIR和之前使用它......但現在,我意識到,我可以很容易地只是有INSTALLDIR工作...例如,我重新分解我的目錄結構,例如:
<Directory Id='TARGETDIR' Name='SourceDir'>
...
<Directory Id="ProgramFilesFolder">
<Directory Id="blahFolder" Name="blah">
<Directory Id="INSTALLFOLDER" Name="blah"/>
</Directory>
</Directory>
</Directory>
我能得到的部件引用INSTALLFOLDER,它會自動生成的GUID的他們:
<ComponentGroup Id='blahgroup'>
<Component Id='blahId' Directory='INSTALLFOLDER' Transitive='no'>
<RegistryKey Root='HKLM' Key='Software\blah\blah' ForceCreateOnInstall='no' ForceDeleteOnUninstall='no'>
<RegistryValue Type='string' Name='blah' Value='BLAH' />
</RegistryKey>
</Component>
...
</ComponentGroup>
但在我的UI,它的好,因爲我可以只修改安裝文件夾路徑相當不錯:
<Product ...>
...
<CustomAction Id='SetInstallFolder' Property='INSTALLFOLDER' Value='[ProgramFilesFolder]blah\blah\'/>
...
</Product>
然後我可以強制INSTALLFOLDER以指向任何地方我想:
<InstallUISequence>
<Custom Action='SetInstallFolder' Sequence='1'/>
...
</InstallUISequence>
<AdminUISequence>
<Custom Action='SetInstallFolder' Sequence='1'/>
...
</AdminUISequence>
WiX不抱怨,Windows Installer抱怨。這很重要,因爲底層的Windows Installer有一些稱爲組件規則的東西。當你破壞它們時會發生壞事。 – 2014-09-24 17:38:17
然後不要使用MSI。我瞭解你的挫敗感......當我第一次瞭解MSI時,我花了很多時間與之抗爭。這是一個非常僵硬的框架,不喜歡你在線外着色。但是一旦掌握了它,就開發人員的生產力和用戶體驗質量而言,就會有巨大的淨收益。 – 2014-09-24 17:47:34
不幸的是,它的標準,人們已經掌握了,否則我不會使用它:) – Alexandru 2014-09-24 17:49:32