What is wrong with my run code using Inno-setup? - installation

I have written code with Inno-Setup to install a 2007 desktop MSAccess split data base and am including Access Runtime 2007. I have tried several variations of "running" the "AccessRuntime.exe" with the database but still get errors. Here are some of the constants and sections:
MyAppName "SSDExpress"
DefaultDirName=C:\{#MyAppName}
OutputDir= C:\{#MyAppName}
MyAppExeName "setup.exe"
[Files]
Source: C:pathtofiles\SSDExpress.accde; DestDir: "{app}"; Flags: ignoreversion
Source: C:pathtofiles\SSDExpress_be.accdb; DestDir: "{app}"; Flags: ignoreversion
Source: C:pathtofiles\AccessRuntime.exe; DestDir: "{app}"; Flags: ignoreversion
I have tried each of these 3 Run codes separately without success. Eachtime I have received errors related to the runtime.
1st try
[Run]
Filename:{app}\AccessRuntime.exe; Description:{cm:LaunchProgram,{#MyAppName}};Flags:
shellexec postinstall skipifsilent; Parameters: “””{app}\{#MyAppExeName}””/runtime”
2nd try
[Run]
Filename: Filename:{app}\{#MyAppExeName;Parameters: “/i””{app}\AccessRuntime.exe””/qn”
3rd try
[Run]
Filename: AccessRuntime.exe; Parameters: “/i””{app}\AccessRuntime.exe””/passive”
What am I doing wrong? (The code works to get all the files into the DefaultDirectory, but still I get messages that it cannot find the "AccessRuntime.exe" for the run code.)
Excuse my confusion in stating my problem. It may help to know that I have never written an installation script before. My only experience is using MS Access Packaging Wizard and I guess I assumed Inno was going to setup similarly.
To clarify what I want to do: I am trying to get a script to create a setup for users, which I can send to them and they can run to install a desktop MS Access 2007 database (SSDExpress), which will require Access Runtime to run if they don't already have access. Ideally I would like to include Access Runtime in the install package for them vs a download. So I want the Setup to install the program, which when they then access it, it will run as a stand alone desk top program. I want the FE to be separate (vs. PW accdr file) so that I can update program changes as needed.
I thank you in advance for your patience. Tricia

The "1st try" is correct, and the others incorrect. (Or at least the syntax is correct; you will have to discover for yourself what the correct parameters to pass to the runtime are.)
However two things to note:
This may have just been a side effect of posting it here, but your code includes "smart" quotes instead of standard quotes. You will have to change these to standard quotes for it to work.
You do not have a space between the filename and the /runtime parameter in the Parameters value.
The very first thing that you need to do is to try running it yourself from the command line with the parameters you think you need, and make sure that this works. Once you know that it works from the command line, it's just a simple matter of using the right syntax to get Inno to run it during the install.

Related

Inno Setup can't download big files from Google Drive [duplicate]

This question already has answers here:
Disabling the large file notification from google drive
(10 answers)
Closed 12 months ago.
Here is my Inno Setup code. The "Scripts.rar" file that i wanna download is about 1 GB. If i put a file that's 25MB, it's working. With this file instead, it just proceeds installing the offline files, skipping the download of the big "Scripts.rar".
I need to download really big files with this setup. They are about 20 files, each one with a 1-3GB size.
InnoSetup is putting me a huge limitation.
#pragma include __INCLUDE__ + ";" + ReadReg(HKLM, "Software\Mitrich Software\Inno Download Plugin", "InstallDir")
#pragma include __INCLUDE__ + ";" + "c:\lib\InnoDownloadPlugin"
#include <idp.iss>
[Code]
idpAddFile('https://drive.google.com/uc?export=download&confirm=hoYh&id=1UnIIBtjhDqtNuSKyeF5ce0grVlTnIIyz', ExpandConstant('{tmp}\Scripts.rar'));
//Download after "Ready" wizard page
idpDownloadAfter(wpReady);
end;
[files]
Source: "C:\Users\Dedric\Desktop\New folder (3)\GTA Compton Compiler\UnRAR.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Run]
Filename: "{tmp}\UnRAR.exe"; Parameters: "x ""{tmp}\Scripts.rar"" ""{code:GetDirPath}"""
Filename: "{code:GetDirPath}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
When you try to manually download your file the browser looks like this:
It states:
Google Drive can't scan this file for viruses.
Scripts.rar (311M) is too large for Google to scan for viruses. Would you still like to download this file?
This is the reason it won't download. It requires user interaction to agree to download the file without performing a virus scan.
If there is any way to get around that, well it would be a Google Drive matter. But it is probably against their policies to ignore displaying the warning. This is not a Inno Setup issue.
Update
A quick search on the internet revealed this article where it says:
Right-click Download anyway and click Inspect Element.
It also says:
Add the "https://drive.google.com" before "/uc?"
So your link becomes:
https://drive.google.com/uc?export=download&confirm=z8LQ&id=1UnIIBtjhDqtNuSKyeF5ce0grVlTnIIyz
Use that link in your script.

How to install Visual Studio Code silently (without auto open when installation ends)?

I found the option to install silently from command line (vscode-installer.exe /VERYSILENT), BUT it still opens automatically at the end of the installation, thus making unattended installation on multiple computers inconvenient.
I checked Inno Setup's documentation (that's what the Visual Studio Code installer uses), but there's nothing related to disabling Visual Studio Code autostart (even on very silent installation).
There might be a way by using /COMPONENTS, /TASKS or /MERGETASKS, but for that I need to know what is already available for use.
Is there a way to make it install completely silently?
There's a hidden task runcode, that gets automatically selected for silent installations. To unselect the runcode task, use the /MERGETASKS=!runcode option.
VSCodeSetup-1.10.1.exe /VERYSILENT /MERGETASKS=!runcode
(Credits for the /MERGETASKS=!runcode go to #RobertWigley)
The above is based on build/win32/code.iss in the GitHub repo:
[Tasks]
Name: "runcode"; Description: "{cm:RunAfter,{#NameShort}}"; \
GroupDescription: "{cm:Other}"; Check: WizardSilent
[Run]
Filename: "{app}\{#ExeBasename}.exe"; \
Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; \
Flags: nowait postinstall; Check: ShouldRunAfterUpdate
Filename: "{app}\{#ExeBasename}.exe"; \
Description: "{cm:LaunchProgram,{#NameLong}}"; \
Flags: nowait postinstall; Check: WizardNotSilent
I found to run within Powershell I used Start-Process, Execute-Process seemed to be deprecated for me.
The below is the line I use.
Start-Process -FilePath "path/to/vscode/VSCodeUserSetup-x64.exe" -Argument "/VERYSILENT /MERGETASKS=!runcode"
Execute-Process is a built-in function for PowerShell Application Deployment Toolkit (PSADT) and the -Parameters parameter is also not a standard parameter, but part of that custom function.
Instead, use Start-Process -FilePath "VSCode.exe" -ArgumentList "/VERYSILENT /MERGETASKS=!runcode"
You can pass any of the arguments in the -ArgumentList
Execute-Process -Path "VSCodeUserSetup-x64-1.30.1.exe" -Parameters "/VERYSILENT /CLOSEAPPLICATIONS
you can use this for PowerShell installation.

Having trouble automating the opening of a non-exe file using INNO Setup and Shellexec

I have done a considerable amount of searching for a solution to what i believe is a very simple answer. I am a very novice INNO Setup Users, so please excuse the question.
I have an Excel file which i want to open after installation. The install process works just fine however i am unable to have the excel file launch automatically on Setup completion. It's my understanding that ShellExec is used to launch non-exe files, however I believe i have this line incorrect.
Any and all help would be greatly appreciated. Here are the snippets of the code which i believe apply to this issue
#define MyAppName "MyApplication"
#define MyAppExeName "MyApplication.xlsm"
[Setup]
AppName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
OutputDir=C:\Documents and Settings\Test\Desktop
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Files]
Source: "C:\\MyApplication.xlsm"; DestDir: "{app}"; Flags: ignoreversion
[ShellExec]
Shellexec('',{#MyAppExeName},'','',SW_HIDE,ewWaitUntilTerminated,ResultCode)
Thank you for taking the time to aid me on this issue.
[Run]
Filename: {app}\{#MyAppExeName}; Description: Run {#MyAppName}; Flags: postinstall shellexec
Replace your [ShellExec] section (which is not recognised by the compiler so will just be ignored) with the above.

Extracting isxdl.dll from the setup takes a long time

I'm using InnoSetup to create an installer for my WPF application. My application is about ~300Mo.
I've implemented this method to check if the client environment has MS Framework 4.0:
http://www.codeproject.com/Articles/20868/NET-Framework-1-1-2-0-3-5-Installer-for-InnoSetup
This method uses the isxdl.dll.
When I start the installer, it stuck 10 seconds on this task (in InnoSetup debug mode):
Extracting temporary file: C:\Users\Ben\AppData\Local\Temp\is-IKJ7C.tmp\isxdl.dll
This DLL is about 122Ko, that's light.
I've tried to create the same installer (using the same scripts) with a lighter application (about 5Mo), and the installer works well (no more stuck time).
I do not know how it is possible that the application files (the weight of the application) affect the loading of this dll.
All files that are going to be used by Install Script for actions & functions should be placed at the beginning of [Files] section especially when using SolidCompression=True. It's also good option to use Flags: nocompression dontcopy for them.
[Files]
Source: ".\ISWin7.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: ".\games\{#BMPDir}\BMP\*"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: ".\InnoCallback.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: ".\MyAppSourceFiles\*"; DestDir: "{app}"; Flags: ignoreversion
The disadvantage to using solid compression is that because all files
are compressed into a single compressed stream, Setup can no longer
randomly access the files
that makes it to "unpack all files" before it can access the last one. More info here.

Inno-Setup: Post Install open link: antivirus alert while opening a link

I am building an installer with inno setup that opens a link to a website after installation
Currently this looks like this:
[Run]
Filename: iexplore.exe; Parameters: http://doma.in/uri/ Verb: open; Flags: shellexec runasoriginaluser
This works fine, except that testing revealed that for example Kaskersky raises a warning that an unauthorized process (the setup) started an authorized process (internet explorer) that wants to access the encrypted passwords. Which could (of course) be a threat.
As I just want to open a browser to display the url it would be great to get rid of this message.
This are the options I evaluated so far
Unfortnuately there is no difference between Run Filename: iexplore and the Pascal Script Shell-Exec('open' ...)?
Perhaps it is somehow possible to pass the operating system a message to create a new instance of the webbrowser without creating it as a child process (i.e. without triggering the warning) of the setup.
As I am doing this for statistics it would be sufficient to call the winhttp library from within the setup. but this is not feasible, because the user could have a firewall installed (see HTTP POST request in Inno Setup Script).
Does it help to sign the setup? Would this suppress the warning?
in the end of your iss file:
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrCode: integer;
begin
if (CurStep=ssDone) then
begin
ShellExec('open', 'http://your.app.url/', '', '', SW_SHOW, ewNoWait, ErrCode);
end;
end;
The following works for me:
[Run]
Filename: "http://doma.in/uri/"; Flags: shellexec runasoriginaluser
What Mike Sutton pointed out was essentially right, but you need to add postinstall to the flags. That sets it to run after the setup has finished. In addition, you need Description to tell the setup finished screen what to display for the checkbox.
[Run]
Filename: "http://doma.in/uri/"; Flags: shellexec runasoriginaluser postinstall; Description: "Open the url."
You might also consider the unchecked flag if you want the option to be opt in instead of opt out.

Resources