[Installshield scripting] Serial naar registry schrijven

Pagina: 1
Acties:

  • jopiek
  • Registratie: September 2000
  • Laatst online: 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Ik gebruik Installshield Developer 8 om een installatie te maken. Nu wil ik bij installatie een serienummer laten invoeren en naar de registry laten schrijven, maar helaas lukt dat niet:

SdCustomerInformationEx ( szTitle, svName, svCompany, svSerial, nvUser );

op de een of andere manier zet ie svCompany in COMPANYNAME en nvUser in USERNAME, maar svSerial laat ie niet in zoiets. Nu kan ik [COMPANYNAME] en [USERNAME] keuig naar het register schrijven door ze gewoon bij de registry jey te zetten, maar ja, hoe met svSerial.

help:
svSerial
Returns the serial number entered by the end user. You can use this information and write it to a file or display it in a confirmation dialog.

Maar hoe en wat legt men helemaal niet uit :/

Cogito Ergo Credo


  • jopiek
  • Registratie: September 2000
  • Laatst online: 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
geloof dat het helaas niet zo'n bekend iets is, wel erg vaag dat het normaal zo simpel gaat maar een uitbreiding zo lastig is terwijl dialoog er al standaard in zit :S iig nu vraag ik wel om serial @ eerste keer runnen...

verwacht vrij weinig van topic, dus mag van mij wel closed

[ Voor 14% gewijzigd door jopiek op 25-09-2003 12:37 ]

Cogito Ergo Credo


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 00:12

Tomatoman

Fulltime prutser

In InstallShield Express is een property beschikbaar die ISX_SERIALNUM heet. Ongetwijfeld is er ook zoiets in InstallShield Developer, misschien heet hij daar ISD_SERIALNUM. Tijdens de installatie zou InstallShield Developer/Express het volgende moeten doen:
  1. De gebruiker geeft via de command line of via het 'User Information' dialoogvenster het serienummer op. Dat serienummer wordt bewaard in ISX_SERIALNUM.
  2. Tijdens de installatie wordt de waarde van ISX_SERIALNUM gekopieerd naar de property ProductID.
  3. Via de RegisterProduct actie worden de user name, company name en product ID (= serienummer) opgeslagen in de installatiedatabase op je harddisk. "The RegisterProduct action registers the product information with the installer. Additionally, this action stores the installer database on the local computer."
  4. Vanuit een willekeurig programma kun je na het installeren de user name, company name en product ID weer terugvinden. Dat doe je met de functie MsiGetUserInfoA/ MsiGetUserInfoW, die zijn gedefinieerd in MsiQuery.h. Beide functies zijn beschikbaar via msi.dll.
Helaas zit er in InstallShield Express een bug, waardoor stap 3 blijkbaar wordt overgeslagen. MsiGetUserInfo levert daardoor geen resultaat. Hopelijk doet InstallShield Developer het wel netjes.
* Tomatoman heeft voor InstallShield Express 4 SP1 een bugfix gemaakt in de vorm van een custom action. Vraag ernaar als je hem nodig hebt.

Maar als je het serienummer toch wilt opslaan in het register, is er een veel gemakkelijkere methode. Voeg in Developer in de Registry dialoog gewoon een registry value toe waarin het serienummer moet worden opgeslagen:
Name: naam van jouw registry value
Data: [ISX_SERIALNUM]

De waarde bij Data moet tussen rechte haken staan, zodat de property vervangen wordt door de waarde die hij op dat moment heeft.

Een goede grap mag vrienden kosten.