Inno Setup. Custom Dialog mit File Association?

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Wie versprochen probiere ich auch Inno Setup aus um einen Installer zu bauen mit dem man das File Format verknüpft. Und wie erwartet bekomme ich das auch nach Stunden mühsamer Recherche und Rumstümperei nicht gebacken. Ich kriege zwar eine Checkbox angezeigt, aber nicht in einem eigenen Panel. Und die Checkbox ist natürlich disfunktional.

Ohne den Dialog scheint es zumindest schon mal die Extension zu verknüpfen. Das benötigt zwei Einträge. Einmal im [Setup], Und man muss eine [Registry] Gruppe dazumachen.

Code: Alles auswählen

[Setup]
...
ChangesAssociations = yes

...
[Registry]

Root: HKCR; Subkey: ".blend";                             ValueData: "{#MyAppName}";          Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}";                     ValueData: "Program {#MyAppName}";  Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon";             ValueData: "{app}\{#MyAppExeName},0";               ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command";  ValueData: """{app}\{#MyAppExeName}"" ""%1""";  ValueType: string;  ValueName: ""
So weit so schlecht. Das würde tun um die *.blend File Extension mit Bforartists ohne weitere Nachfrage zu verknüpfen.

Das Problem ist wie gesagt dann der eigene Dialog mit der Checkbox. Und den Teil kriege ich nicht hin.

Dazugekommen ist Zeile 58 und 59, wie in der Manual beschrieben. http://www.jrsoftware.org/ishelp/index. ... gessection

[CustomMessages]
AssocFileExtension=&Associate %1 with the %2 file extension

Und bei den Tasks Zeile 63

Name: "Associate"; Description: "{cm:AssocFileExtension}";Flags: unchecked

Und das Ergebnis sieht dann eben so wie im Shot aus. Die Checkbox tut so natürlich nicht. Und mit dem %1 und %2 kann ich gar nichts anfangen. Wie verknüpfe ich diese Variablen mit meinem Programm und der File Extension?

Ideen? :)

Code: Alles auswählen

; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Bforartists"
#define MyAppVersion "0.9.2"
#define MyAppPublisher "Bforartists"
#define MyAppURL "https://www.bforartists.de"
#define MyAppExeName "bforartists.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{8288B234-28EC-499B-9351-75C5271B9677}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Users\x\Documents\test
OutputBaseFilename=InstallBforartists092
Compression=lzma
SolidCompression=yes
ChangesAssociations = yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "scottishgaelic"; MessagesFile: "compiler:Languages\ScottishGaelic.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[CustomMessages]
AssocFileExtension=&Associate %1 with the %2 file extension

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "Associate"; Description: "{cm:AssocFileExtension}";Flags: unchecked

[Files]
Source: "C:\Users\x\Documents\Bforartists_win64_092\bforartists.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\x\Documents\Bforartists_win64_092\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Registry]

Root: HKCR; Subkey: ".blend";                             ValueData: "{#MyAppName}";          Flags: uninsdeletevalue; ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}";                     ValueData: "Program {#MyAppName}";  Flags: uninsdeletekey;   ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon";             ValueData: "{app}\{#MyAppExeName},0";               ValueType: string;  ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command";  ValueData: """{app}\{#MyAppExeName}"" ""%1""";  ValueType: string;  ValueName: ""
Dateianhänge
associate.jpg
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Ah, noch keine Antwort. Jetzt wisst ihr wieso ich keine gescripteten Installer mag ^^
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
mrz
Beiträge: 79
Registriert: 07.08.2008, 14:34

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von mrz »

Tiles hat geschrieben:Die Checkbox tut so natürlich nicht.
https://stackoverflow.com/a/8910191
Bei dir fehlt das "Tasks" Attribut bei deinen Einträgen in der Registry Section.
Tiles hat geschrieben:Und mit dem %1 und %2 kann ich gar nichts anfangen.
https://stackoverflow.com/a/31902410
Siehe Punkt 2.1.

Evtl wirds mit dem Beispiel klarer:
https://stackoverflow.com/a/34097160

(Alle Angaben ohne Gewähr, Resultat von 2 Minuten gurgeln.)
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Ah, super. Task ist also das missing Bit \o/

Vielen Dank. Die Dinger sind mal gebookmarkt. Mal sehen ob ich es jetzt hinbekomme :)

Ich habe echt Stunden gegoogelt, und nichts gefunden was mir weitergeholfen hätte. Vom dritten Link habe ich zumindest die Registryeinträge. Das hatte ich schon an der Strippe. Aber die anderen zwei Links habe ich nicht entdeckt. Wenn man nicht weiss nach was man überhaupt suchen soll kann es manchmal echt schwierig werden. Und wenn einem dann noch die Google Custom Search in die Quere kommt ... :/
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

So siehts jetzt aus.

Das mit den Argumenten habe ich rausgeschmissen. Den braucht man ja eigentlich nicht. Da kann man gleich den Klartext einbauen.

Der Teil mit der Association scheint aber immer noch nicht hinzuhauen. Blender Files machen nach wie vor mit Blender auf. Das Problem habe ich allerdings auch mit dem Advanced Installer. Bin mir also nicht sicher ob ich hier nicht in ein spezielles Problem mit meinem PC renne. Ich habe hier UAC aus weil man sonst mit VS und auch ansonsten irre wird ...

Code: Alles auswählen

; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Bforartists"
#define MyAppVersion "0.9.2"
#define MyAppPublisher "Bforartists"
#define MyAppURL "https://www.bforartists.de"
#define MyAppExeName "bforartists.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{8288B234-28EC-499B-9351-75C5271B9677}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Users\x\Documents\test
OutputBaseFilename=InstallBforartists092
Compression=lzma
SolidCompression=yes
ChangesAssociations = yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "scottishgaelic"; MessagesFile: "compiler:Languages\ScottishGaelic.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[CustomMessages]
AssocFileExtension=Open*.blend files with Bforartists
AssocingFileExtension=File Association:

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: "associate"; Description: "{cm:AssocFileExtension}"; GroupDescription: "{cm:AssocingFileExtension}"; Flags: unchecked

[Files]
Source: "C:\Users\x\Documents\Bforartists_win64_092\bforartists.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\x\Documents\Bforartists_win64_092\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Registry]

Root: HKCR; Subkey: ".blend"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: associate 
Root: HKCR; Subkey: "{#MyAppName}"; ValueData: "Program {#MyAppName}"; Flags: uninsdeletekey; ValueType: string; ValueName: ""; Tasks: associate 
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon"; ValueData: "{app}\{#MyAppExeName},0"; ValueType: string;  ValueName: ""; Tasks: associate 
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command"; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; ValueType: string; ValueName: ""; Tasks: associate 
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
joggel

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von joggel »

Hi,

wenn Du willst kann ich das mal hier testen.
Ich bräuchte dazu nur dein Install-Script und das Bforartists...
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Das wäre natürlich Super. Vielen Dank für das Angebot :)

Das Install Script ist das letzte Script das du da oben im Code Tag siehst. Und das Bforartists Build findest du als Download hier. 111 Mb: http://www.bforartists.de/data/binaries ... 64_092.zip

Was du auch bräuchtest wäre wohl erst mal eine Blender Installation. Es geht ja darum dass am Anfang erst mal Blender mit dem *blend File verknüpft ist. Und ich will das mittels Installer mit Bforartists assoziieren. Das gibts hier: https://www.blender.org/download/
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
joggel

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von joggel »

Ich finde nicht das Inno Setup-File.
Kannst du mir das auch mal schicken, damit ich nicht von vorne anfangen muß....
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Steht doch da oben. Der Code Block ^^

Ich habs jetzt noch mal als Zipfile angehängt. Danke dass du danach schaust :)
Dateianhänge
customdialog9.zip
(1.48 KiB) 365-mal heruntergeladen
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
joggel

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von joggel »

Ich darf dir mitteilen, dass bei mir alles reibungslos funktioniert; so wie du es möchtest.
Die .blend Datei wird mit Bforartists geöffnet.

Beim Setup wird es auch korrekt dargestellt:
Bild2.png

Keine Ahnung wieso das bei dir so dargestellt wird...
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Wuhu \o/

Danke fürs Testen :)

Den Dialog hatte ich ja schon gefixt. Das passt nun so. Hattest du denn vorher Blender installiert? Denn das wäre der interessante Teil. Ob es dann auch assoziiert wenn *blend schon mit Blender verknüpft ist ...
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
joggel

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von joggel »

Ja, Blender hatte ich vorher installiert.
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: Inno Setup. Custom Dialog mit File Association?

Beitrag von Tiles »

Danke :)

Jetzt muss ich nur noch rausfinden wieso das an meinem PC, einer VM und meinem Laptop nicht funktioniert :lol:
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Antworten