Vra

Ek het 'n VS opstel projek vir my app geskep. Dit installeer die jeug aan die gebruiker-gedefinieerde plek en skep 'n paar kortpaaie in die start menu. Dit skep ook 'n inskrywing in Control Panel / byvoeg of programme wat gebruik kan word om die aansoek te verwyder Verwyder.

Ek sou graag wou weet of daar 'n manier om 'n start menu entry (langs ander inskrywings geskep deur die opstel van) wat my app kan verwyder skep.

Tot dusver het ek gevind 'n oplossing, maar dit is pyn om te gebruik: Ek het uninstall.bat lêer wat ek sit in my gids app geskep en ek toevoeging van 'n kortpad na hierdie lêer. Inhoud van die *.bat lyk soos volg:

@echo off
msiexec /x {0B02B2AB-12C6-4548-BF90-F754372B0D36}

Wat ek wil nie oor hierdie oplossing is dat elke keer as ek 'n produk kode van my program op te dateer (ek doen dit elke keer as ek my app weergawe op te dateer as VS stel) Ek moet hierdie lêer met die hand wysig voor die bou van die opstel projek en tipe korrekte nuwe produk kode.

Is daar iemand weet 'n eenvoudiger manier van die toevoeging van uninstaller om die jeug?

Was dit nuttig?

Oplossing

Jy kan die bat lêer wysig om 'n argument te aanvaar.

@echo off
msiexec /x %1

In die opstel projek, waar jy die kortpad definieer, voeg die [productcode] eiendom as die argument.

Ander wenke

Ek het presies hierdie probleem.

Wat ek gedoen het was:

  • bied die uninstall.bat lêer. Hierdie lêer kry onvoorwaardelik geïnstalleer
  • bied 'n persoonlike aksie in die installeerder, wat herskryf die uninstall.bat lêer, en voeg die korrekte produk kode.

hier is die skrif wat loop as 'n persoonlike aksie. Dit herskryf die uninstall.bat lêer, dan verwyder self.

// CreateUninstaller.js
//
// Runs on installation, to create an uninstaller
// .cmd file in the application folder.  This makes it
// easy to uninstall. 
//
// Mon, 31 Aug 2009  05:13
//

var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");

var parameters = Session.Property("CustomActionData").split("|"); 
var targetDir = parameters[0];
var productCode = parameters[1];

ts = fso.OpenTextFile(targetDir + "uninstall.cmd", ForWriting, true);


ts.WriteLine("@echo off");
ts.WriteLine("goto START");
ts.WriteLine("=======================================================");
ts.WriteLine(" Uninstall.cmd");
ts.WriteBlankLines(1);
ts.WriteLine(" This is part of MyProduct.");
ts.WriteBlankLines(1);
ts.WriteLine(" Run this to uninstall MyProduct");
ts.WriteBlankLines(1);
ts.WriteLine("=======================================================");
ts.WriteBlankLines(1);
ts.WriteLine(":START");
ts.WriteLine("@REM The uuid is the 'ProductCode' in the Visual Studio setup project");
ts.WriteLine("%windir%\\system32\\msiexec /x " + productCode);
ts.WriteBlankLines(1);
ts.Close();


// all done - try to delete myself.
try 
{
    var scriptName = targetDir + "createUninstaller.js";
    if (fso.FileExists(scriptName))
    {
        fso.DeleteFile(scriptName);
    }
}
catch (e2)
{
}

Ek dink ek kon dit gedoen het met Wix, maar ek wou nie om dit te leer.

Nog 'n opsie is om die msiexec bel om te verwyder van die aansoek self, as 'n sekere command line argument gegee - sien die wat hier gewys word vir verdere detail voorbeeld: http://endofstream.com/creating-uninstaller-in-a-visual-studio-project/

Deur dit te doen dit op hierdie manier, jy sal nie gedwing word om die opdrag prompt wanneer die verwydering van sien:)

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top