Context menu aanpassing deployen via .msi

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

Topicstarter
Hallo,

Autocad read-only
Omdat we binnen het bedrijf af en toe AutoCAD tekeningen van elkaar moeten inzien heb ik een vbscriptje gemaakt dat ervoor zorgt dat je ze read-only kan openen. Het kopieert de nodige .dwg naar een mapje in %temp% en zet ze op read-only. Dan opent hij hem met de standaard geassocieerde applicatie. AutoCAD start dan op, en heeft door dat het om een read-only bestand gaat.

Shell/Context-menu aanpassen
Er is op het eerste gezicht geen gemakkelijkere manier om dit te bereiken, en het script werkt heel goed.
Ik heb handmatig een aanpassing gedaan aan de manier waarop windows met .dwg's omgaat, via Folder options>file types>.dwg>advanced>new. De nieuwe mogelijkheid onder 'open' en 'print' is dan 'open Read-Only' en roept een .bat file aan met de filename als parameter, die vervolgens weer de vbscript aanroept.

Aanmaken verwijzing:
Afbeeldingslocatie: http://imgur.com/dD0yq.png

Het werkt!:
Afbeeldingslocatie: http://imgur.com/YzeE0.png

Deployen
Het is de bedoeling dat het uitgerold kan worden als .msi (of als het niet anders kan als .exe of enig andere applicatie) via ons eigen deploy-systeem (via GPO's werkte niet betrouwbaar genoeg). Ons deploy-systeem draait gewoon op de doelmachine de .msi/.exe onder administrator met een /quiet flag.

Wij repackagen applicaties zelf (althans, dat proberen we, en lukt meestal ook) maar meestal maken we alleen een msi transform (.mst). We gebruiken hiervoor Wise Package studio 7(en orca).

De officiele manier om een shell-extensie te klussen is gebruik maken van de Verb en Extension tabellen (MSDN bron).Dan zijn ook een Class en daardoor Component benodigd. Als ik dat doe (via de wise package studio wizard) komt-ie niet in het context menu.

Ik heb ook geprobeerd met de registerwaarden die veranderen als je het handmatig toevoegt in de folder options te draaien. Dat werkte, maar alleen bij PC's die dezelfde versie van Acad draaien. Anders zijn de file associaties zodanig (per versie van acad) dat hij niet de shell-optie laat zien. Tenslotte heb ik het geprobeerd met registerwaarden die het aanmaken van de .dwg associatie beschrijven.

Op internet staat eigenlijk alleen maar info over het aanwijzen van je programma als standaardprogramma voor een bepaalde extensie.

In het kort:
Ik wil graag via een msi een context-menu handler toevoegen zonder de huidige bestandsassociaties kapot te maken.

Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

Topicstarter
Blijkbaar toch niet zoveel mensen met ervaring hiermee?

Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

Topicstarter
Ik heb het nu zelf gefixed, met een niet-zo-nette work-around:

De MSI
-De 2 bestanden (de .bat en de .vbs) worden geinstalleerd (standaard C:/Program Files/AcadRO/, maar dit mag overal)
-Er worden (21 stuks) registerwaarden aangemaakt:

SOFTWARE\CLASSES\<type>\shell
SOFTWARE\CLASSES\<type>\shell\Open_Read-Only (value: Open Read-Only)
SOFTWARE\CLASSES\<type>\shell\Open_Read-Only\command\ (value: "[#AcadRO.bat]" "%1")

voor elk <type> in deze lijst:
• AutoCAD.Drawing.14
• AutoCAD.Drawing.15
• AutoCAD.Drawing.16
• AutoCAD.Drawing.17
• AutoCAD.Drawing.18
• AutoCADLT.Drawing.15
• AutoCADLT.Drawing.17

Dat [#acadRO.bat] is een relatieve verwijzing naar het installatiepad. Dit is een standaard MSI-functionaliteit.

Dat werkt voor alle .dwg's die nu gebruikelijk zijn. Als er weer nieuwe versies komen is het een kwestie van een upgrade deployen met de juiste upgradecodes + de nieuwe types.

De 'echte' manier
De juiste manier is een shell extension (.dll) maken met de code erin (ipv de .vbs), deze een CLSID (class ID) meegeven, dat class ID netjes in het register stoppen. Dat kost echter veel moeite - zeker voor iemand die er geen ervaring mee heeft.

Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Technicality schreef op donderdag 11 maart 2010 @ 17:17:
Blijkbaar toch niet zoveel mensen met ervaring hiermee?
Ik denk dat de meeste mensen die een Autodesk AutoCAD versie gebruiken iets meer gestandaardiseerd zitten op één versie om juist dit soort dingen NIET te hoeven doen ;)

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

Topicstarter
alt-92 schreef op woensdag 17 maart 2010 @ 17:00:
[...]

Ik denk dat de meeste mensen die een Autodesk AutoCAD versie gebruiken iets meer gestandaardiseerd zitten op één versie om juist dit soort dingen NIET te hoeven doen ;)
Dat maakt eigenlijk niet uit. Stel dat je één versie zou draaien, en je installatie werkt alleen daarmee. Bij een nieuwe versie van CAD zit je dan alsnog met het probleem!

Het ideale geval is natuurlijk dat je het voor de extensie .dwg fixed, zoals je ook lijkt te doen als je via de windows 'file types' GUI werkt. Wat er dan blijkbaar eigenlijk gebeurt is dat er per geregistreerd filetype voor die extensie het register aangepast wordt. Dat doe ik nu bij installatie 'handmatig' (hardcoded registerkeys met file types erin), maar het is natuurlijk beter als je installer het automatisch doet.

[ Voor 3% gewijzigd door Technicality op 18-03-2010 04:15 ]