Tag R17
[vapoursynth-svn.git] / installer / vsinstaller.iss
blobcfb3f3518cecbeb129c8c6c0b7bf660fd01b6461
1 #define AppName = 'VapourSynth'
2 #define Version = 'R17'
4 [Setup]
5 OutputDir=Compiled
6 OutputBaseFilename=vapoursynth_installer
7 Compression=lzma2/max
8 InternalCompressLevel=max
9 SolidCompression=yes
10 LZMAUseSeparateProcess=yes
11 VersionInfoDescription={#= AppName} {#= Version} Installer
12 AppId={#= AppName}
13 AppName={#= AppName}
14 AppVersion={#= Version}
15 AppVerName={#= AppName} {#= Version}
16 AppPublisher=Fredrik Mellbin
17 AppPublisherURL=http://www.vapoursynth.com/
18 AppSupportURL=http://www.vapoursynth.com/
19 AppUpdatesURL=http://www.vapoursynth.com/
20 VersionInfoVersion=0.9.0.3
21 DefaultDirName={pf}\VapourSynth
22 DefaultGroupName=VapourSynth
23 AllowCancelDuringInstall=no
24 AllowNoIcons=yes
25 AllowUNCPath=no
26 MinVersion=0,5.1
27 PrivilegesRequired=poweruser
28 FlatComponentsList=yes
30 [Types]
31 Name: Full; Description: Full installation
33 [Components]
34 Name: Core; Description: {#= AppName} {#= Version}; Types: Full; Flags: fixed
36 [Tasks]
37 Name: newvpyfile; Description: "Add 'New VapourSynth Python Script' option to shell context menu"; GroupDescription: "New File Shortcuts:"
38 Name: registervsfs; Description: "Register the VSFS handler"; GroupDescription: "Pismo File Mount:"
40 [Files]
41 ;core binaries
42 Source: vapoursynth.dll; DestDir: {code:GetPythonPath}; Flags: ignoreversion uninsrestartdelete restartreplace
43 Source: vapoursynth.dll; DestDir: {app}\core; Flags: ignoreversion uninsrestartdelete restartreplace
44 Source: vapoursynth.pyd; DestDir: {code:GetPythonPath}; Flags: ignoreversion uninsrestartdelete restartreplace
45 Source: QtCore4.dll; DestDir: {code:GetPythonPath}; Flags: ignoreversion uninsrestartdelete restartreplace
46 Source: QtCore4.dll; DestDir: {app}\core; Flags: ignoreversion uninsrestartdelete restartreplace
47 Source: vsfs.dll; DestDir: {app}\core; Flags: ignoreversion uninsrestartdelete restartreplace
48 Source: template.vpy; DestDir: {app}; Flags: ignoreversion uninsrestartdelete restartreplace
49 Source: vsvfw.dll; DestDir: {sys}; Flags: ignoreversion uninsrestartdelete restartreplace
50 ;vs2010 runtime
51 Source: msvcr100.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile
52 Source: msvcp100.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile
53 ;sdk
54 Source: ..\include\VapourSynth.h; DestDir: {app}\sdk\include; Flags: ignoreversion uninsrestartdelete restartreplace
55 Source: ..\include\VSHelper.h; DestDir: {app}\sdk\include; Flags: ignoreversion uninsrestartdelete restartreplace
56 Source: ..\sdk\filter_skeleton.c; DestDir: {app}\sdk\examples; Flags: ignoreversion uninsrestartdelete restartreplace
57 Source: ..\sdk\invert_example.c; DestDir: {app}\sdk\examples; Flags: ignoreversion uninsrestartdelete restartreplace
58 ;bundled filters
59 Source: filters\avisource.dll; DestDir: {app}\filters; Flags: ignoreversion uninsrestartdelete restartreplace
60 Source: filters\vivtc.dll; DestDir: {app}\filters; Flags: ignoreversion uninsrestartdelete restartreplace
61 Source: filters\eedi3.dll; DestDir: {app}\filters; Flags: ignoreversion uninsrestartdelete restartreplace
62 Source: filters\temporalsoften.dll; DestDir: {app}\filters; Flags: ignoreversion uninsrestartdelete restartreplace
63 Source: filters\histogram.dll; DestDir: {app}\filters; Flags: ignoreversion uninsrestartdelete restartreplace
66 [Icons]
67 Name: {group}\VapourSynth Website; Filename: http://www.vapoursynth.com/
68 Name: {group}\Documentation; Filename: http://www.vapoursynth.com/doc/
69 Name: {group}\Bundled Filters; Filename: {app}\filters
70 Name: {group}\VapourSynth SDK; Filename: {app}\sdk
72 [Registry]
73 Root: HKLM; Subkey: SOFTWARE\Classes\CLSID\{{58F74CA0-BD0E-4664-A49B-8D10E6F0C131}; ValueType: string; ValueName: ""; ValueData: "VapourSynth"; Flags: uninsdeletevalue uninsdeletekeyifempty
74 Root: HKLM; Subkey: SOFTWARE\Classes\CLSID\{{58F74CA0-BD0E-4664-A49B-8D10E6F0C131}\InProcServer32; ValueType: string; ValueName: ""; ValueData: "vsvfw.dll"; Flags: uninsdeletevalue uninsdeletekeyifempty
75 Root: HKLM; Subkey: SOFTWARE\Classes\CLSID\{{58F74CA0-BD0E-4664-A49B-8D10E6F0C131}\InProcServer32; ValueType: string; ValueName: "ThreadingModel"; ValueData: "Apartment"; Flags: uninsdeletevalue uninsdeletekeyifempty
76 Root: HKLM; Subkey: SOFTWARE\Classes\Media Type\Extensions\.vpy; ValueType: string; ValueName: ""; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty
77 Root: HKLM; Subkey: SOFTWARE\Classes\Media Type\Extensions\.vpy; ValueType: string; ValueName: "Source Filter"; ValueData: "{{D3588AB0-0781-11CE-B03A-0020AF0BA770}"; Flags: uninsdeletevalue uninsdeletekeyifempty
78 Root: HKLM; Subkey: SOFTWARE\Classes\.vpy; ValueType: string; ValueName: ""; ValueData: "vsfile"; Flags: uninsdeletevalue uninsdeletekeyifempty
79 Root: HKLM; Subkey: SOFTWARE\Classes\vsfile; ValueType: string; ValueName: ""; ValueData: "VapourSynth Python Script"; Flags: uninsdeletevalue uninsdeletekeyifempty
80 Root: HKLM; Subkey: SOFTWARE\Classes\vsfile\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "vsvfw.dll,0"; Flags: uninsdeletevalue uninsdeletekeyifempty
81 Root: HKLM; Subkey: SOFTWARE\Classes\AVIFile\Extensions\VPY; ValueType: string; ValueName: ""; ValueData: "{{58F74CA0-BD0E-4664-A49B-8D10E6F0C131}"; Flags: uninsdeletevalue uninsdeletekeyifempty
82 Root: HKLM; Subkey: SOFTWARE\Classes\.vpy\ShellNew; ValueType: string; ValueName: "FileName"; ValueData: "{app}\template.vpy"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: newvpyfile
84 [Run]
85 Filename: "{win}\pfm.exe"; Parameters: "register ""{app}\core\vsfs.dll"""; Tasks: registervsfs; Flags: skipifdoesntexist
87 [UninstallRun]
88 Filename: "{win}\pfm.exe"; Parameters: "unregister ""{app}\core\vsfs.dll"""; Tasks: registervsfs; Flags: skipifdoesntexist
90 [Code]
92 var PythonPath: string;
94 function InitializeSetup(): Boolean;
95 begin
96 Result := RegQueryStringValue(HKCU, 'SOFTWARE\Python\PythonCore\3.3\InstallPath', '', PythonPath);
97 if not Result then
98 begin
99 Result := RegQueryStringValue(HKLM, 'SOFTWARE\Python\PythonCore\3.3\InstallPath', '', PythonPath);
100 if not Result then
101 MsgBox('Python 3.3 installation not found.', mbCriticalError, MB_OK);
102 end;
103 end;
105 function GetPythonPath(Param: String): String;
106 begin
107 Result := PythonPath + '\Lib\site-packages';
108 end;
110 // copied from the internets
112 /////////////////////////////////////////////////////////////////////
113 function GetUninstallString(): String;
115 sUnInstPath: String;
116 sUnInstallString: String;
117 begin
118 sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
119 sUnInstallString := '';
120 if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
121 RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
122 Result := sUnInstallString;
123 end;
126 /////////////////////////////////////////////////////////////////////
127 function IsUpgrade(): Boolean;
128 begin
129 Result := (GetUninstallString() <> '');
130 end;
133 /////////////////////////////////////////////////////////////////////
134 function UnInstallOldVersion(): Integer;
136 sUnInstallString: String;
137 iResultCode: Integer;
138 begin
139 // Return Values:
140 // 1 - uninstall string is empty
141 // 2 - error executing the UnInstallString
142 // 3 - successfully executed the UnInstallString
144 // default return value
145 Result := 0;
147 // get the uninstall string of the old app
148 sUnInstallString := GetUninstallString();
149 if sUnInstallString <> '' then begin
150 sUnInstallString := RemoveQuotes(sUnInstallString);
151 if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
152 Result := 3
153 else
154 Result := 2;
155 end else
156 Result := 1;
157 end;
159 /////////////////////////////////////////////////////////////////////
160 procedure CurStepChanged(CurStep: TSetupStep);
161 begin
162 if (CurStep=ssInstall) then
163 begin
164 if (IsUpgrade()) then
165 begin
166 UnInstallOldVersion();
167 end;
168 end;
169 end;