...someplace, where there isn't any trouble? Do you suppose there is such a place, Toto?

Überschreiben von Dateien mit einem MSI verhindern

Jetzt habe ich schon eine ganze Weile mit WiX rumgespielt, aber einfach keinen Weg gefunden, das Überschreiben von etwa schon vorhandenen Dateien mit Bordmitteln zu verhindern. Also, hingesetzt und eine Custom Action DLL geschrieben, die sich hier findet.

Man bindet das Dingens in Form eines Binary Tags in den Product Tag mit ein:

    <Binary Id='CheckTargetDir' SourceFile='custact.dll' />    

Dann kopiert man die DLL in die Project Root und ergänzt vor und innerhalb der InstallExecuteSequence die Custom Action:

    <CustomAction Id='CheckingTargetDirectoryFiles' 
     BinaryKey='CheckTargetDir' DllEntry='CheckTargetDir' />
    <InstallExecuteSequence>
      <Custom Action='CheckingTargetDirectoryFiles' 
       After='CostFinalize'>NOT Installed</Custom>
    </InstallExecuteSequence>

Und schon wird jede Datei, die von der Installation ins Zielverzeichnis kopiert werden würde, überprüft, ob sie vielleicht schon da liegt. Ist das der Fall, wird die Installation mit einer Fehlermeldung abgebrochen. Spooky, eh!?!

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

No feedback yet

Comments are closed for this post.