0

Я столкнулся с проектом, который создает пакет MSI. Одна из папок из этого пакета имеет такое название:MSI установка файла внутри папки, которая содержит в своем имени подстроку% Path%?

% Р-% F_% Path% альфа

Во время установки, во время InstallFiles стандарт действий, установщик Windows разрешит подстроку% Path % как переменная среды, поэтому символ «:» появляется внутри имени папки и ошибок установки (неверный символ в имени папки).

EDIT: То же самое происходит ошибка для DuplicateFiles стандартное действие тоже.

Если я создаю MSI, которая создает эту папку пустой (т.е. во время CreateFolders стандартного действия) установщик Windows не пытается решить подстроку% Path% к переменному окружению и установка завершится успешно, создавая папку с именем представленных выше.

Я никогда не встречал эту ситуацию раньше. Кто-нибудь еще? Если да, можете ли вы дать более подробную информацию о том, что происходит точно, и есть ли доступ к обходу?

Примечание! Я добавил все теги различных инструментов разработки MSI, потому что я подозреваю, что это не зависящая от инструмента ситуация.

+1

Документы для «форматирования» указывают на то, что вы можете избежать%, закодировав ее как [\%], которая, похоже, работает в моем ограниченном тестировании. – PhilDW

+0

Действительно, отформатированные опоры поддерживают экраны вроде этого. Но в таблице Directory нет форматированных столбцов, символ «\» не принимается в имени допустимой папки. https://msdn.microsoft.com/en-us/library/aa368295%28v=vs.85%29.aspx –

+0

Понятно, конечно, но если InstallFiles применяет форматированные правила в разрешении вашего пути, это стоило того чтобы увидеть, применит ли это правило [\]. – PhilDW

ответ

1

Я могу подтвердить, используя WiX и IsWiX. IsWiX авторы в папку с файлом, как это:

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="MergeRedirectFolder"> 
     <Directory Id="owd6248671CA393CCC018715A2FB53AD2D6" Name="%P_%F_%Path%alfa"> 
      <Component Id="owcA59F51CBEAEE88B00B715AF4FEE6BF72" Guid="1619af96-1b2b-64ea-91f5-1a297c3c636a"> 
      <File Id="owfA59F51CBEAEE88B00B715AF4FEE6BF72" Source="$(var.SourceDir)\test.txt" KeyPath="yes" /> 
      </Component> 
     </Directory> 
     </Directory> 

авторы IsWiX пустая папка, как это:

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="MergeRedirectFolder"> 
     <Directory Id="owd6248671CA393CCC018715A2FB53AD2D6" Name="%P_%F_%Path%alfa"> 
      <Component Id="owc6248671CA393CCC018715A2FB53AD2D6" Guid="071c27cb-0566-40b1-9a50-5672b3fbd5e1"> 
      <CreateFolder /> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 

Оба создают от MSI, что компилировать и пройти проверку, но папка с файлом дает об ошибках описать, когда папка с элементом CreateFolder работает.

Смежные вопросы