Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] Resource

Sivun loppuun

Zeable [16.09.2010 23:14:07]

#

Hei!
Minulla olisi sellainen kysymys, kun tekee ohjelmaa, niin Resourceihin voi tallentaa tiedostoja, esim. kuvia, ääniä jne. Mutta miten voi Visual Basic .Netillä purkaa tiedostoja Resourceista jotta esim. toinen ohjelma, joka on tallennettuna Resourceihin voitaisiin suorittaa.

Haluaisin tehdä samantyylisen sovelluksen joka purkaa tiedostot vaikkapa esim. Resourceista tai vastaavista samalla tavalla kuin asennusohjelmat (esim. NSIS, InnoSetup jne.).

Olisiko tämä mahdollista Visual Basic .Netillä?

Kiitos jo valmiiksi vastauksista!


T: Zeable

neau33 [17.09.2010 00:33:13]

#

Moro Zeable!

Minä tapaan tehdä asennusohjelmat alusta loppuun aivan itse syystä, että voin tällöin taata, että asennuspaketteja ei voi purkaa esim. UniExtract-ohjelmalla, joka takaa käyttäjälle, että käytettäessä Uninstall moodia kaikki ohjelmaan sidotut liiokset poistetaan Windowsin rekisteristä automaattisesti ja että kaikki ohjelmaan sidotut tiedostot vapautetaan sidoksista järjestelmään ja kaikki tiedostot, jotka kuuluvat yksinomaan asennetun ohjelman käyttöön poistetaan kiintolevyltä.

Grez [17.09.2010 01:22:28]

#

Assemblystä voi lukea resursseja GetManifestResourceStream -metodilla. Vastaavasti listan assemblyssä olevista resursseista saa metodilla GetManifestResourceNames.

Eli tällainen pieni konsoliohjelma listaisi kaikki siinä itsessään olevien resurssien nimet:

Sub Main()
    Dim a = System.Reflection.Assembly.GetExecutingAssembly()
    Dim resNames = a.GetManifestResourceNames()
    For Each resName In resNames
        Console.WriteLine(resName)
    Next
End Sub

neau33 kirjoitti:

Minä tapaan tehdä asennusohjelmat alusta loppuun aivan itse syystä, että voin tällöin taata, että asennuspaketteja ei voi purkaa esim. UniExtract-ohjelmalla, joka takaa käyttäjälle, että käytettäessä Uninstall moodia kaikki ohjelmaan sidotut liiokset poistetaan Windowsin rekisteristä automaattisesti ja että kaikki ohjelmaan sidotut tiedostot vapautetaan sidoksista järjestelmään ja kaikki tiedostot, jotka kuuluvat yksinomaan asennetun ohjelman käyttöön poistetaan kiintolevyltä.

Ihan pakko kysyä että mitä ihmettä? Siis vastaako tuo jotenkin Zeablen kysymykseen? Onko tuollaisessa 6 lauseen virkkeessä muutenkaan mitään järkeä, kun selvästi menet itsekin siinä sanoissasi sekaisin?

neau33 [18.09.2010 21:34:38]

#

No heippa taas!

Tässä SharpDevelop 4.0 Beta2:lla vännetty esimerkki sovellus (AsennusTesti.exe), elikäs projektiin on lisätty resurssifilu MainForm.resx, johon on tuotu hiirellä kilkkaamalla tiedosto nimeltä MHDesktop.exe (näkyy resurssissa nimellä MHDesktop)...

Imports System.Resources

Public Partial Class MainForm

   Public Sub New()

      Me.InitializeComponent()

   End Sub


   Sub Button1_Click(sender As Object, e As EventArgs)

      Dim resources As New _
      ResourceManager(GetType(MainForm))
      Dim Bytes As Byte() = _
      CType(resources.GetObject("MHDesktop"), Byte())
      resources = Nothing
      Dim fullPath As String = _
      Application.StartupPath & "\MHDesktop.exe"
      Try
         Kill(fullPath)
      Catch ex As Exception
      End Try

      FileOpen(1, fullPath, OpenMode.Binary, OpenAccess.Write)
      FilePut(1, Bytes): FileClose(1): Bytes = Nothing
      Do While Dir(fullPath) = ""
      Application.DoEvents: Loop
      'Testi...
      Shell(fullPath, AppWinStyle.NormalFocus)

   End Sub

End Class

Nyt ompi sitten niin, että voin purkaa tämän, käännettäessä ohjelmaan sisään upotettavan, resurssin sisällön esim. Red Gate's .NET Reflector ohjelmalla (koskee mitä tahansa .NET Framework ohjelmaa), että nimimerkki Grez voisi hieman miettiä että kuka tässä nyt sekoilee sanoissaan...

Grez [18.09.2010 21:52:16]

#

Sanoissa sekoilemisesta... Oletetaan nyt sitten, että et seonnut tuon virkkeen kanssa vaan tosiaan tarkoitit mitä kirjoitit. Kerroit että UniExtract-ohjelma takaa käyttäjälle, että käytettäessä Uninstall moodia kaikki ohjelmaan sidotut liitokset poistetaan Windowsin rekisteristä automaattisesti.

Jos oletetaan, että tuo nyt pitäisi paikkansa, niin en ymmärrä miksi haluat estää sen käytön.

Mielestäni viimeisimmässä viestissäsikään ei ole mitään pointtia minulle, vaikka viestisi perusteella sen minulle kirjoitit. Ilmeisesti virheellisesti oletit, että en tiennyt jotain mainitsemistasi asioista.

neau33 [18.09.2010 22:19:05]

#

Heippa taas!

Toivottavasti nimimerkki Zeable näkee viimeisimmässä viestissäni edes jonkun pointin...

Metabolix [19.09.2010 11:45:20]

#

neau33, jos kerran ammattilaisten tekemät asennusohjelmat ovat huonoja ja itse pystyt helposti parempaan, mikset saman tien rupea myymään tuotettasi ja tienaa roimasti rahaa? Eiköhän vain omasta viritelmästäsi löydy enemmän bugeja ja yllättäviä "ominaisuuksia"...

neau33 [19.09.2010 12:56:01]

#

Metabolix, en ole väittänyt ammattilaisten tekemiä asennusohjelmia huonoiksi. Totesin vain, että vaikkapa InnoSetup-asennuspaketeista voi halutessaan purkaa haluamansa matskun ja ohitella rekisteröinnit, mikä ei ole aina välttämättä varsinaisen asennettavan ohjelman/ohjelmiston tekijän tahi julkaisijan mieleen...

Edelleen on niin, että varsinkin päivitettyjen msiexec-asennuksien postaminen jättää monesti rekisteriin turhaa kamaa, jolloin virustorjuntaohjelmat ko. kamaa skanailessaan hidastavat konetta, josta asiasta ei käyttäjälle ole varmaankaan mitään hyötyä...

On sitä löytynyt ammattilaistenkin tekemistä ohjelmista bugeja ja yllättäviä "ominaisuuksia", vaan ovat jotkut näistä siitä huolimatta tienanneet todella rutkasti rahaa...

Grez [19.09.2010 13:46:28]

#

neau33 kirjoitti:

Metabolix, en ole väittänyt ammattilaisten tekemiä asennusohjelmia huonoiksi. Totesin vain, että vaikkapa InnoSetup-asennuspaketeista voi halutessaan purkaa haluamansa matskun ja ohitella rekisteröinnit, mikä ei ole aina välttämättä varsinaisen asennettavan ohjelman/ohjelmiston tekijän tahi julkaisijan mieleen...

Jos käyttäjä itse päättää purkaa kamat ulos paketista ja käsin viritellä ne käyttöön, niin ei käyttäjä silloin voi olettaa, että niiden poistaminen onnistuu automaagisesti. Toisaalta jos käyttäjä välttämättä haluaa kaivaa ne tavarat ulos paketista käsin, niin se onnistuu kyllä siitä sinun tekemästäkin paketista isommalla vaivalla. Eli nähdäkseni tuossa yrität ratkoa ongelmaa, jota todellisuudessa ei edes ole, eikä ratkaisukaan toimi 100%.

Toki jos ja kun versiointi ja roskienkeruu omalla asennusohjelmallasi toimii paremmin kuin yleisesti tarjolla olevilla asennusohjelmilla niin pahuksen hyvä. Se ei vaan mielestäni mitenkään liitty siihen, saako paketin purettua käsin vai ei.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta