2016-08-17 9 views
-1

Ich habe ein Wix-Installationsprogramm, das eine sqlclr in einer Datenbank installiert. Ich verwende sqlcmd, um ein Skript auszuführen.WIX run sqlcmd während der Deinstallation

Ich möchte auch die sqlclr entfernen, wenn der Benutzer die Anwendung entfernt. das ist was ich bisher habe und es scheint nicht zu funktionieren.

<InstallExecuteSequence> 
    <Custom Action="sqlcmd.install" After="InstallFiles">NOT Installed</Custom> 
    <!--Ensure this runs after the CA to set up the property for its cmd line--> 
    <Custom Action="sqlcmd" After="sqlcmd.install">NOT Installed</Custom> 
    <Custom Action="NewerVersion" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom> 
    <RemoveExistingProducts After="InstallInitialize" /> 
    <Custom Action="sqlcmd.uninstall" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 
</InstallExecuteSequence> 
<!--Find sqlcmd.exe path--> 
<Property Id="SQLBINDIR"> 
    <RegistrySearch Id="SqlBinDir" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup" Name="Path" Type="raw" /> 
</Property> 
<!--Need to use "property" CA to get variable substitution--> 
<CustomAction Id="sqlcmd.install" Property="sqlcmd" Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -S [SQLSERVER] -d [SQLDATABASE] -U [SQLUSER] -P [SQLPASSWORD] -i &quot;[#Install.sql]&quot; -v PROGRAMDIR=&quot;[APPLICATIONFOLDER]&quot;" /> 
<!--Note that the cmd line and args will come from a property with the same name as the CA, this has been set by the CA above--> 
<CustomAction Id="sqlcmd" BinaryKey="WixCA" DllEntry="CAQuietExec" Return="check" Execute="deferred" Impersonate="yes" /> 
<CustomAction Id="sqlcmd.uninstall" Property="sqlcmd" Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -S [SQLSERVER] -d [SQLDATABASE] -U [SQLUSER] -P [SQLPASSWORD] -i &quot;[#Uninstall.sql]&quot;" /> 

Antwort

0

Hier ist die Lösung für alle Interessierten.

Scheint, meine Deinstallation stieß auf das Huhn oder das Ei Problem. meine uninstall.sql Datei wurde entfernt, bevor die sqlcmd ausgeführt wurde. Also habe ich die Deinstallation vor RemoveFiles geändert.

<InstallExecuteSequence> 

    <Custom Action="installcmd.install" After="InstallFiles">NOT Installed</Custom> 
    <!--Ensure this runs after the CA to set up the property for its cmd line--> 
    <Custom Action="installcmd" After="installcmd.install">NOT Installed</Custom> 

    <Custom Action="uninstallcmd.uninstall" Before="RemoveFiles">Installed AND NOT REINSTALL</Custom> 
    <!--Ensure this runs after the CA to set up the property for its cmd line--> 
    <Custom Action="uninstallcmd" After="uninstallcmd.uninstall">Installed AND NOT REINSTALL</Custom> 

    <Custom Action="NewerVersion" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom> 
    <RemoveExistingProducts After="InstallInitialize"/> 

</InstallExecuteSequence> 



<!--Find sqlcmd.exe path--> 
<Property Id="SQLBINDIR"> 
    <RegistrySearch Id="SqlBinDir" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\130\Tools\ClientSetup" Name="Path" Type="raw" /> 
</Property> 

<!--Need to use "property" CA to get variable substitution--> 
<CustomAction Id="installcmd.install" Property="installcmd" Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -S [SQLSERVER] -d [SQLDATABASE] -U [SQLUSER] -P [SQLPASSWORD] -i &quot;[#Install.sql]&quot; -v PROGRAMDIR=&quot;[PROGRAMDIR]&quot;" /> 
<!--Note that the cmd line and args will come from a property with the same name as the CA, this has been set by the CA above--> 
<CustomAction Id="installcmd" BinaryKey="WixCA" DllEntry="CAQuietExec" Return="check" Execute="deferred" Impersonate="yes" /> 

<CustomAction Id="uninstallcmd.uninstall" Property="uninstallcmd" Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -S [SQLSERVER] -d [SQLDATABASE] -U [SQLUSER] -P [SQLPASSWORD] -i &quot;[#Uninstall.sql]&quot;" /> 
<!--Note that the cmd line and args will come from a property with the same name as the CA, this has been set by the CA above--> 
<CustomAction Id="uninstallcmd" BinaryKey="WixCA" DllEntry="CAQuietExec" Return="check" Execute="deferred" Impersonate="yes" /> 
Verwandte Themen