Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: installer/src/innosetup-exe/64BitTwoArch.iss

Issue 6202981292703744: Whole installer (Closed)
Patch Set: Created June 24, 2014, 7:27 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: installer/src/innosetup-exe/64BitTwoArch.iss
===================================================================
new file mode 100644
--- /dev/null
+++ b/installer/src/innosetup-exe/64BitTwoArch.iss
@@ -0,0 +1,60 @@
+[Setup]
+AppName=Adblock Plus IE
+AppVersion={#version}
+CreateAppDir=No
+DisableStartupPrompt=Yes
+DisableDirPage=Yes
+DisableProgramGroupPage=Yes
+DisableReadyPage=Yes
+DisableFinishedPage=Yes
+DisableWelcomePage=Yes
+Uninstallable=No
+ArchitecturesInstallIn64BitMode=x64
+OutputDir=..\..\build
+OutputBaseFilename=adblockplusie-{#version}
+SignTool=signtool
+
+[Files]
+; Install adblockplusie-FINAL-x64.msi if running in 64-bit mode,
+; adblockplusie-FINAL-ia32.msi otherwise.
+Source: "..\..\build\x64\adblockplusie-{#version}-multilanguage-x64.msi"; DestDir: "{tmp}"; Check: Is64BitInstallMode
+Source: "..\..\build\ia32\adblockplusie-{#version}-multilanguage-ia32.msi"; DestDir: "{tmp}"; Check: not Is64BitInstallMode
+
+[Run]
+Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\adblockplusie-{#version}-multilanguage-x64.msi"""; Check: Is64BitInstallMode
+Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\adblockplusie-{#version}-multilanguage-ia32.msi"""; Check: not Is64BitInstallMode
+
+[Code]
+// Make sure InnoSetup always runs in silent mode, the UI is provided by the
+// MSI. Origin of the code is https://stackoverflow.com/a/21577388/785541.
+#ifdef UNICODE
+ #define AW "W"
+#else
+ #define AW "A"
+#endif
+type
+ HINSTANCE = THandle;
+
+function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string;
+ lpParameters: string; lpDirectory: string; nShowCmd: Integer): HINSTANCE;
+ external 'ShellExecute{#AW}@shell32.dll stdcall';
+
+function InitializeSetup: Boolean;
+begin
+ // if this instance of the setup is not silent which is by running
+ // setup binary without /SILENT parameter, stop the initialization
+ Result := WizardSilent;
+ // if this instance is not silent, then...
+ if not Result then
+ begin
+ // re-run the setup with /SILENT parameter; because executing of
+ // the setup loader is not possible with ShellExec function, we
+ // need to use a WinAPI workaround
+ if ShellExecute(0, '', ExpandConstant('{srcexe}'), '/SILENT', '',
+ SW_SHOW) <= 32
+ then
+ // if re-running this setup to silent mode failed, let's allow
+ // this non-silent setup to be run
+ Result := True;
+ end;
+end;

Powered by Google App Engine
This is Rietveld