2016-06-13 3 views
2

Несколько месяцев назад я разместил это question о нескольких установках, и я строго следовал предложенному мной example. Он работал очень хорошо, но я пытаюсь удалить экземпляр по умолчанию. Когда я типаНабор инструментов Wix Несколько экземпляров Установка

msiexec /x MyInstaller.msi 

мое приложение «логически» удалена, но нет папки и файлы не будут удалены на моей машине!

Вот код:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Component Id="comp_67F76B3C_8D92_4DCF_8C51_42E51502C4A3" Guid="28C71156-F612-49ED-A4E9-0CB598AA84AB" MultiInstance="yes"> 
    <CreateFolder/> 
    </Component> 
    <Component Id="comp_AA102B27_0657_498D_9CD5_683C4F33B5E2" Guid="0F601C97-CDFF-4614-A608-B42253240E2C"> 
    <File Id="_C72F9A1F_AF4A_47A3_928C_238643ABA5D4" Name="CrashReportManager.exe" Source="..\workspace\Release\CrashReportManager.exe" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_442142FD_D0B8_410C_8904_E73047757FAB" Guid="0A1AE820-0FF7-442C-8333-9FEFA2E3F33C"> 
    <File Id="_CA463C5C_E397_40E6_9B7B_28CCA647D0CA" Name="BCGCBPRO2440d120.dll" Source="..\workspace\Debug\BCGCBPRO2440d120.dll" KeyPath="yes" /> 
    </Component> 
    <Directory Id="dir_350BD3EA_2F6C_4AD4_A960_8AB2C40F4F36" Name="Docs"> 
    <Component Id="DocFolderId" Guid="32DAE480-7C01-4BAA-B99D-9FE8D7D43369" MultiInstance="yes">   
     <CreateFolder /> 
    </Component> 
    <Component Id="comp_FFFDE3FE_1205_4E74_82B1_E832501A096C" Guid="EECC223C-EBAD-43CA-9F3C-4A19FD9E7429"> 
     <File Id="_D0FE1868_D0D7_4778_8BC6_D40FE2B21DB2" Name="ModuleList(1).txt" Source="..\ModuleList(1).txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_07E32598_CA8D_46B6_A3D6_DA36FD308E1F" Guid="FCCC41AA-17BC-4ADA-925D-631A614C9F80"> 
     <File Id="_894CFDFB_4514_4CAC_86C3_426CC6836B7C" Name="ModuleList(2).txt" Source="..\ModuleList(2).txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_21465088_A65C_43D4_A038_93412404BA91" Guid="67D18D29-6466-4D36-A279-A9396A62019C"> 
     <File Id="_C9362477_88D8_463C_B77D_7097255F5E13" Name="ModuleList.txt" Source="..\ModuleList.txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_3C85BB37_5715_45E7_A135_C640D7348360" Guid="6DDB0F88-7346-4221-8FB1-106C5F707EE5"> 
     <File Id="_BFE55263_BD18_427B_9F87_30403BB2540D" Name="ReadMe.txt" Source="..\ReadMe.txt" KeyPath="yes" /> 
    </Component> 
    </Directory> 
</Directory> 

Что случилось?

+0

в данном конкретном примере, вам не нужны компоненты с '' внутри. Пока есть другие компоненты с файлами, родительский каталог для этого будет создан. Таким образом, вы можете попытаться удалить это и посмотреть, что произойдет. И BTW, есть ли какие-либо предупреждения, когда вы компилируете/связываете свой MSI? –

+0

При установке нескольких установок на одном компьютере во время создания вашего установщика вы можете попасть в ситуации, когда у вас есть ссылки на фантомные компоненты или поддельные установки. Вы должны запустить с помощью '/ l * v log.txt', чтобы узнать, ссылались ли на некоторые компоненты несколько установок. Кроме того, если у вас есть условные функции, которые по умолчанию не установлены, это может вызвать проблемы, если вы не устанавливаете «или Установили» в условие, позволяющее этой функции не удовлетвориться во время удаления. –

ответ

1

Вы использовали KeyPath="yes" во всех своих компонентах. Это означает, что такой компонент используется в качестве контрольной точки для установщика Windows, например, если вы хотите восстановить установку. Это означает, что это обязательный компонент, необходимый для работы приложения.

Поскольку вы используете несколько экземпляров, и вы упомянули вы установили больше, чем просто экземпляр по умолчанию, программа установки Windows, не удалит ключевые компоненты до последнего одного из экземпляров становится неустановленных (т.е. он отслеживает их внутренне с контрольным счетчиком).

0

Использование MultiInstance="yes" для всех и каждого компонента, и, как говорит Ян, избавиться от <CreateFolder/> компонента

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