2msi (msi1, msi2)를 캡슐화하는 번들을 만들었습니다. UI에서 나는 어떤 MSI를 설치할 것인지 선택하도록 사용자에게 요청하는 체크 박스를 사용합니다.Wix Burn 문제 : "Found dependent"라는 메시지가 표시되지 않음
사용자가 설치할 msi 중 하나를 선택하면 설치가 정상적으로 진행됩니다. 그러나 제거 작업을하는 동안, 굽기 로그 파일은 말한다 :
[][:15]: Detected package: Netfx4Full, state: Present, cached: None
[][:15]: Detected package: DummyInstallationPackageId3, state: **Absent**, cached: None
[][:15]: Detected package: msi2.msi, state: **Present**, cached: Complete
[][:15]: Detect complete, result: 0x0
[][:16]: Plan 3 packages, action: Uninstall
[][:16]: Will not uninstall package: msi2.msi, found dependents: 1
[][:16]: Found dependent: {08e74372-83f2-4594-833b-e924b418b360}, name: My Test Application
설치 시나리오에서, 나는 msi1을 msi2를 설치하지하기로 결정했습니다.
내 번들 코드는 보이는 같은 :
<Bundle Name="My Test Application" Version="1.0.0.0" Manufacturer="Bryan" UpgradeCode="CC2A383C-751A-43B8-90BF-A250F7BC2863">
<Chain>
<PackageGroupRef Id='Netfx4Full' />
<MsiPackage Id="DummyInstallationPackageId3"
SourceFile="msi1.msi"
ForcePerMachine="yes"
InstallCondition="var1 = 1"
>
</MsiPackage>
<MsiPackage
SourceFile="msi2.msi"
Vital="yes" Cache="yes" Visible="no"
ForcePerMachine="yes"
InstallCondition="var2 = 2"
>
</MsiPackage>
</Chain>
내 OnDetectPackageComplete()과 같은 : 내가 지금 무엇을해야
private void OnDetectPackageComplete(object sender, DetectPackageCompleteEventArgs e)
{
if (e.PackageId == "DummyInstallationPackageId3")
{
if (e.State == PackageState.Absent)
InstallEnabled = true;
else if (e.State == PackageState.Present)
UninstallEnabled = true;
}
}
굽기 번들 자유롭게 MSI를하는 사용자를 제거 할 수 있는지 설치시 선택됩니다. 게다가 설치를 위해 msi를 둘 다 선택하면 제거가 정상적으로 작동합니다.
IMO, 번들과 2msi의 관계에 약간의 문제가 있습니다. 내가이 문제에 갇혀있는 것처럼 나를 도와주세요.
해결 방법에 동의하지만 내 modelView 코드에 문제가 있습니다. 내가 잘 된 msi2.msi 만 설치했다고 가정 해보십시오. 이제 제거 할 때, 내가 진행했을 때; 내가 얻은 UI에는 "설치"버튼이 활성화되어 있습니다. "DummyInstallationPackageId3"(msi1.msi)이 설치되어 있지 않으므로 "설치"단추가 활성화됩니다. 이 문제를 해결할 수있는 방법이 있습니까? 나는 주로 당신의 블로그에서 주어진 예를 따랐다. –
그런 경우 InstallEnabledPackageId3 및 InstallEnabledPackageId2와 같은 패키지마다 속성을 가질 수 있습니다. 그런 다음 설치 단추를 InstallEnabled에 바인딩하고 public bool처럼 정의하십시오. InstallEnabled {get {return (InstallEnabledPackageId3 && InstallEnabled PackageId2)? 허위 사실; }} – BryanJ
2 개의 부울을 사용하면 문제를 해결하는 데 도움이됩니다. 나는 문제가 더 복잡한 wrt 'dependency'라고 희망하고 있었다. 그러나 msi2.msi의 개별 설치/제거조차도 문제가 없습니다. Thnx. 비록 Burn이 개별 msi에 대한 종속성으로 "번들 이름"을 등록하는 것이 궁금합니다. 화상 기록에 그 정보를 봤어. –