2013-02-27 3 views
0

См. Ниже инструкции; на данный момент у меня есть жестко закодированные папки источника и назначения (эти папки формируются во время процесса установки) в проекте настройки MSI. Примечание. Ниже пути к файлу - это путь, в котором указывается место установки пакета MSI, а не местоположение источника. Вопрос о том, как установить значения целевого или исходного значения, скрывая жестко закодированные значения, такие как [INSTALLLOCATION] \ App_Config \COPYFILE post MSI Установка с использованием WIX

На данный момент я передаю УСТАНОВКУ (E: \ Websites \ SCBUDirect \ Website \ SCBUDirect.B2CWeb) через командной строки и хотите установить значение папки назначения как [INSTALLLOCATION] \ App_Config \, но не знаете, как это можно реализовать с помощью настроек свойств или пользовательских действий, которые я пытался, но не смог заставить его работать.

Ниже приведен фрагмент (из heat.exe) компонента файла, который необходимо скопировать.

<Component Id="cmp209B0DBB82F9FF15193D29F0BD337B7F" Directory="dirB0A921E55A598C65B18B4E47885629C3" Guid="{3B140259-FCC7-4D2E-8629-CBB879BBA46C}"> 
    <File Id="filBC5CC5B8DCC504F6DC75A7B2673E7D0D" KeyPath="yes" Source="C:\Workspaces\Chatra\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" /> 
</Component> 

Вот моя часть моего кода в product.wxs

<Fragment> 
    <Property Id="SourceFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" /> 

    <Property Id="DestFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\" /> 


    <ComponentGroup Id="CopyFiles"> 
     <ComponentRef Id="CMP_LOG4TXT" /> 
    </ComponentGroup> 

     <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52" Directory="INSTALLLOCATION" KeyPath="yes"> 
     <CopyFile Id="Copy_LOG4TXT" 
       SourceProperty="SourceFilesFolder" 
       DestinationProperty="DestFilesFolder" 
       DestinationName="basic.log4net" /> 
     </Component> 

</Fragment> 
+0

Я хотел бы начать с запуска MSI с помощью 'MSIexec/I yourProduct.msi/lvoicewarmupx log.txt', а затем поиск в результате log.txt для Id и Guid компонента, чтобы увидеть, если это дает вам никакой полезной информации , – BryanJ

+0

'CopyFile' не копирует файл до' InstallExecuteSequence' –

+0

Привет, теперь я смог понять, в чем проблема, я не указал компонент копирования в функции. Но теперь я не хочу жестко кодировать источник и место назначения. Можно ли это сделать. На данный момент я прохожу через INSTALLLOCATION (E: \ Websites \ SCBUDirect \ Website \ SCBUDirect.B2CWeb) через командную строку и хочу установить значение папки назначения как [INSTALLLOCATION] \ App_Config \, но не уверен, как это можно реализовать с помощью настройки свойств или пользовательские действия, которые я пытался, но не смогли заставить его работать. – Chat

ответ

0

вы можете использовать относительный путь, как так:

<Component Id="comp_Include_0" DiskId="1" KeyPath="yes" Guid="D026AE84-0F34-4715-810D-4EB6656DFECD"> 
    <File Id="file_Include_0" Source="..\Include\3rdParty\ac_types2.6\ac_complex.h" /> 
</Component> 

".. \"
средства Например, папка bin \ release заявлена ​​следующим образом:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFiles64Folder"> 
     <Directory Id="INSTALLFOLDER" Name="ATE" > 
     </Directory> 
    </Directory> 
</Directory> 

вам нужно будет объявить

<DirectoryRef Id="INSTALLFOLDER"> 

самый простой способ я нашел, чтобы создать WIX установки является использование парафина для полных каталогов

0

[INSTALLLOCATION] Шаблон Путь к файлу по экономии нужно сделать здесь, Таким образом, путь к файлу сохраняется во время установки и удаления. В противном случае мы получим ошибки сетевого поиска.

<product> 

    <Property Id="INSTALLLOCATION"> 
      <RegistrySearch Id="REMEMBERPROPERTY" Root="HKCU" Key="Websites\SCBUDirect" Name="Remembered" Type="raw"/> 
    </Property> 

     <CustomAction Id="SAVEINSTALLDIR" Property="CMDREMEMBERPROPERTY" Value="[INSTALLLOCATION]"/> 
     <CustomAction Id="SETINSTALLDIR" Property="INSTALLLOCATION" Value="[CMDREMEMBERPROPERTY]" /> 

     <InstallExecuteSequence> 
      <Custom Action="SAVEINSTALLDIR" Before="AppSearch"></Custom> 
     <Custom Action="SETINSTALLDIR" After="AppSearch">CMDREMEMBERPROPERTY</Custom> 
     </InstallExecuteSequence> 

     <SetProperty Id="DestFilesFolder" Value="[INSTALLLOCATION]\Website\App_Config" After="CostInitialize" /> 

</product> 

<fragment> 

    <ComponentGroup Id="CopyFiles"> 
     <ComponentRef Id="CMP_LOG4TXT" /> 
    </ComponentGroup> 

     <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52" Directory="dir572C565E70B3AEE6F0C29D3EE9056E9B" KeyPath="yes"> 
     <CopyFile Id="Copy_LOG4TXT"   Source="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" DestinationProperty="DestFilesFolder" DestinationName="basic.log4net" /> 
     </Component> 

</fragment>