Vra

Ek het 'n setup projek vir my NET aansoek, en beide installeer / verwyder is net mooi werk, as hulle alleen gelaat word terwyl hulle werk.

As iemand die verwyder kanselleer terwyl dit verwerk, die rollback lyk nie korrek hanteer word, en op probeer om weer te verwyder op 'n later tyd, is die gebruiker begroet met 'n nul verwysing uitsondering nie.

Ek wil graag net vereenvoudig die situasie; Ek wil graag die gebruiker se vermoë om 'n uninstall aan die gang te kanselleer verwyder. Kan dit gedoen word?

Dankie, -Ben

Was dit nuttig?

Oplossing

Ja, dit is moontlik om dit te doen. MSDN lyste verskeie opsies ; egter, is dit dalk makliker wees om net te lap die MSI-lêer geskep deur Visual Studio. Dit kan gedoen word met behulp van Orca (: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Bin \ orca.msi Jy sal 'n installeerder vir hierdie instrument in die gids Windows SDK tipies onder C vind).

Orca kan jy die MSI databasis tabelle wysig. Om weg te steek die knoppie te kanselleer wat jy wil hê om 'n rekord te voeg aan die tabel Control (uit hier ):

Dialog        | Control      | Action   | Condition
------------------------------------------------------
ProgressForm  | CancelButton | Hide     | 1

Hierdie handleiding taak van die toevoeging van 'n rekord met behulp van Orca is waarskynlik beter gedoen met 'n kort VBScript soos dat:

Set oMsi = CreateObject("WindowsInstaller.Installer")

' get path to msi from command line
strMsiFullPath = Wscript.Arguments(0)
' open transacted
Set oDB = oMsi.OpenDatabase(strMsiFullPath , 1)

' insert a record into the [ControlCondition][3] table
Set oView = oDB.OpenView("INSERT INTO `ControlCondition` " & _
    "(`ControlCondition`.`Dialog_`, `ControlCondition`.`Control_`," & _
     "`ControlCondition`.`Action`, `ControlCondition`.`Condition`) " & _
     "VALUES ('ProgressForm', 'CancelButton', 'Hide', '1')")

' clean up
oView.Execute: oView.Close: oDB.Commit
Set oMsi = Nothing

Dit script kan bygevoeg word as 'n post-opbou stap om jou opstel projek (Let daarop dat daar 'n tikfout in die Visual veranderlike Studio vir die uitset pad):

cscript $(ProjectDir)patch.vbs $(BuiltOuputPath)
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top