2016-04-12 18 views
1

Bir yükleyici oluşturmak için WiX kullanma. Yükleme işleminin bir parçası olarak, bir Excel Eklentisi'ni genel Excel Eklentileri klasörüne (%APPDATA%\Microsoft\AddIns) yüklemek istiyorum. Benim eklenti kullanıcının %APPDATA%\Microsoft\AddIns klasöründe yalnızca madde iseYüklemeyi kaldırmak için WiX'in MS Office Eklentileri klasörünü silmesini önleyin.

<Directory Id="MicrosoftFolder" Name="Microsoft"> 
    <Directory Id="AddInsFolder" Name="AddIns"> 
    <Component Id="COMP_MyAddInLib" Guid="MY-GUID-HERE"> 
     <File Source="\MyAddInLib.xll" Id="LibMyAddIn" /> 
     <RegistryValue Root="HKCU" Type="string" Key="Software\!(loc.ManufacturerName)\!(loc.ApplicationName)\MyAddIn" Name="INSTALLDIR" Value="[INSTALLDIR]" KeyPath="yes" /> 
     <RemoveFolder Id="RemoveAddInsFolder" On="uninstall" Property="AddInsFolder" /> 
     <RemoveFolder Id="RemoveMicrosoftFolder" On="uninstall" Property="MicrosoftFolder"/> 
    </Component> 
    </Directory> 
</Directory> 

Bu düzgün oluşturur ve bu işi yapar ama, AddIns klasör üzerinde silinir: İşte yazdım kod ilgili kısmıdır kaldırma. Excel'in (veya başka bir Office uygulamasında) sorunlara neden olabileceğinden emin değilim, ancak bu klasör Office tarafından oluşturulduğundan ve benim yükleme işlemimden dolayı, onu kaldırmaktan kaçınmak istiyorum.

İki <RemoveFolder> etiketini kaldırabilirim ancak daha sonra yapı iki ICE64 hatasıyla başarısız oluyor.

Eklenti dosyamı nasıl kaldıracağım, ancak klasör yapısını nasıl koruyabileceğimi ve yapının başarısız olmasından nasıl kurtulabileceğime dair herhangi bir fikrin var mı? Muhtemelen klasör silinir sonra çalıştığından emin olmak için, belki sadece InstallFinalize önce, sonuna doğru planlamak istiyorum

ExeCommand="cmd /C \"mkdir %APPDATA%\Microsoft\AddIns\"" 

:

cevap

1

her zaman bu klasörlerinizin kendilerine ait değilse ve başka bir yüklemede bunlardan başka içeriğe sahip olabilirseniz, öğenizdeki RemoveFolder etiketlerini kullanmazdım.

Bu size bazı ICE doğrulama uyarıları verecektir. Bu klasörleri kaldırmamanız gerektiğini biliyorsanız (Kesinlikle% APPDATA% \ Microsoft klasörüne sahip değilsiniz) sonra bunları geride bırakmanız gerektiğini biliyorsunuz. Yüklemekte olduğunuz bileşen buna sahip olduğunuzdan düzgün bir şekilde kaldırılacak, ancak bu durumda klasörlerin arkasında bırakılması doğru olacaktır.

Yaptığım şey, yükleyici projenizin sürüm oluşturmalarında ICE64'ü bastırmaktır, ancak hata ayıklama için ICE doğrulama göstermesini bırakır.

Sadece Yayın yapılandırması altında yükleyici için wixproj olarak

<SuppressIces>ICE64</SuppressIces> 

tanımlar. Veya Visual Studio'yu kullanıyorsanız, "WixProj özellikleri> Araç Ayarları> Belirli ICE doğrulamalarını bastır" ı kullanarak ICE doğrulamasını bastırmayı da ekleyin.

Eğer anahtar -sice geçmesi gerekiyor (sizin wix dosyalar üzerinde light.exe çağıran) cmd hattıyla açıkça bina varsa: ICE64

DÜZENLEME: <RemoveFolder> etiketi bir göz alarak bu görünüyor değil, hala dosyaları veya klasörleri olan klasörleri kaldırmak, bu iki RemoveFolder etiketini bileşeninizde bırakmak için Tamam, ancak bunları kaldırmayı ve ICE64 doğrulama uyarısını kaldırmayı düşünürüm.

+0

Her iki cevap da iyidir, ancak bunun en güvenli çözüm olduğunu düşündüğümden hoşlanıyorum.Kurulum sürecime dokunulmayan/sahiplenmeyen klasörleri bırakmayı tercih ederim. Bunun için daha iyi bir yerleşik mekanizmanın olmadığını, ancak ICE64 hatalarının bastırılmasının en iyi yol gibi görüneceğine şaşırdım. Yardım için teşekkürler. –

0

Sadece dizini yeniden yapıyor bir özel eylem yapabilirdi. Ayrıca, dönüş kodunu yok saydığınızdan emin olun, aksi takdirde klasör hala varsa başarısız olur.

+0

Bunu denedim ve uygulanabilir bir çözüm gibi görünüyor. Diğer cevabı kabul ettim çünkü klasör yapısını değiştirmediğinden daha güvenli olduğunu düşünüyorum. Yardım için çok teşekkürler. –

İlgili konular