Zdravím vás!
V MSVS jsem si vytvořil Setup projekt (Instalátor). Všechno je v pohodě, ale potřeboval bych dvě věci:
1.: Když se mi aplikace nainstaluje, nechám vytvořit ikonu na ploše a v menu. Když ale aplikaci spouštím pomocí těchto odkazů, spustí se nejprve něco jako instalátor (Preparing for install..., proběhne progress bar) a pak se aplikace spustí. Pokud ale aplikaci spustím přímo z jejího adresáře, běží vše tak jak má. Nevíte, čím by to mohlo být?
2.: Jak zjistím adresář, který vybral uživatel při instalaci? Je jasné, že většina z uživatelů nechá program nainstalovat do toho, který jsem zvolil, ale když už jim ho nechám vybrat, chtěl bych zjistit, ve kterém adresáři se aplikace nachází, abych s ním mohl pracovat. Zapisoval jsem to do registru ve formátu [ProgramFilesFolder]\[ProductName], ale neřeší to situaci, kdy to uživatel nainstaluje např. přímo na C:\
Díky za rady
EDIT: odkaz na http://www.codeguru.com/csharp/.net/net_vs_addins/visualstudioadd-ins/article.php/c7245__1 jsem už prostudoval (obě části).
Fórum › .NET
Instalátor
Zdar .. ten instalátor nemám rád, je hrozně omezenej a prakticky nepodporuje češtinu. Bohužel jsem se s podobným problémem nesetkal a neporadím ti, ale můžu ti doporučit Inno Setup (http://www.jrsoftware.org/isinfo.php).
A ještě šablonu, kterou v Inno Setupu používám. Ověří existenci .NET Frameworku a v případě potřeby ho stáhne. Pokud to budeš potřebovat, tak si zkontroluj texty - jsou tam některý údaje, který by se ti moc nehodily.
[_ISTool]
EnableISX=true
[Setup]
AppName=App
AppVerName=App 1.0
MinVersion=4.1.1998,4.0.1381
DefaultDirName={pf}\DeaLer\App
DefaultGroupName=DeaLer\App
UninstallDisplayIcon=\isxdl.dll
Compression=lzma
SolidCompression=true
OutputBaseFilename=setup
OutputDir=D:\Programování\App\Setup
SourceDir=D:\Programování\App\Setup
VersionInfoVersion=1.0
VersionInfoCompany=DeaLer
VersionInfoDescription=Instalace produktu App
VersionInfoCopyright=Copyright © 2006+ DeaLer
AppCopyright=DeaLer
ShowLanguageDialog=auto
AppID={{7FFB582D-4A44-400C-A72A-2DE0051D18E8}
AppPublisher=DeaLer
AppPublisherURL=http://dealer-software.qsh.cz
AppSupportURL=http://dealer-software.qsh.cz/diskuse
AppVersion=1.0
AppComments=App
AppContact=dealer@centrum.cz
UninstallDisplayName=App
LanguageDetectionMethod=uilanguage
[Files]
Source: C:\Program Files\ISTool\isxdl.dll; Flags: dontcopy
Source: ..\..\..\..\Software\GacTool\bin\Release\GacTool.exe; DestDir: {app}; Attribs: hidden; Flags: 32bit; Languages:
[Messages]
[Icons]
Name: {group}\Odinstalovat; Filename: {uninstallexe}
[Languages]
Name: Czech; MessagesFile: compiler:Languages\Czech.isl
[Registry]
Root: HKLM; Subkey: SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\App; ValueType: string; ValueData: {app}; Flags: uninsdeletekey
[Run]
Filename: {app}\GacTool.exe; Parameters: /i App.dll; Description: Nainstalovat produkt do GAC; Flags: postinstall; Languages: ; WorkingDir: {app}
[UninstallRun]
Filename: {app}\GacTool.exe; Parameters: /u App.dll; WorkingDir: {app}
[Code]
var
dotnetRedistPath: string;
downloadNeeded: boolean;
dotNetNeeded: boolean;
memoDependenciesNeeded: string;
procedure isxdl_AddFile(URL, Filename: PChar);
external 'isxdl_AddFile@files:isxdl.dll stdcall';
function isxdl_DownloadFiles(hWnd: Integer): Integer;
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: PChar): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';
const
dotnetRedistURL = 'http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=cs&SrcCategoryId=&SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe';
// local system for testing...
// dotnetRedistURL = 'http://192.168.100.103/dotnetfx.exe';
function InitializeSetup(): Boolean;
begin
Result := true;
dotNetNeeded := false;
// Check for required netfx installation
if (not RegKeyExists(HKLM, 'Software\Microsoft\.NETFramework\policy\v2.0')) then begin
dotNetNeeded := true;
if (not IsAdminLoggedOn()) then begin
MsgBox('App vyžaduje Microsoft .NET Framework 2.0, který musí být nainstalován administrátorem', mbInformation, MB_OK);
Result := false;
end else begin
memoDependenciesNeeded := memoDependenciesNeeded + ' .NET Framework 2.0' #13;
dotnetRedistPath := ExpandConstant('{src}\dotnetfx.exe');
if not FileExists(dotnetRedistPath) then begin
dotnetRedistPath := ExpandConstant('{tmp}\dotnetfx.exe');
if not FileExists(dotnetRedistPath) then begin
isxdl_AddFile(dotnetRedistURL, dotnetRedistPath);
downloadNeeded := true;
end;
end;
SetIniString('install', 'dotnetRedist', dotnetRedistPath, ExpandConstant('{tmp}\dep.ini'));
end;
end;
end;
function NextButtonClick(CurPage: Integer): Boolean;
var
hWnd: Integer;
ResultCode: Integer;
begin
Result := true;
if CurPage = wpReady then begin
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
// don't try to init isxdl if it's not needed because it will error on < ie 3
if downloadNeeded then begin
isxdl_SetOption('label', 'Stahování Microsoft .NET Framework 2.0');
isxdl_SetOption('description', 'App vyžaduje Microsoft .NET Framework 2.0. Prosím počkejte, než budou potřebné soubory staženy a nainstalovány.');
if isxdl_DownloadFiles(hWnd) = 0 then Result := false;
end;
if (Result = true) and (dotNetNeeded = true) then begin
if Exec(ExpandConstant(dotnetRedistPath), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then begin
// handle success if necessary; ResultCode contains the exit code
if not (ResultCode = 0) then begin
Result := false;
end;
end else begin
// handle failure if necessary; ResultCode contains the error code
Result := false;
end;
end;
end;
end;
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
s: string;
begin
if memoDependenciesNeeded <> '' then s := s + 'Závislosti k instalaci:' + NewLine + memoDependenciesNeeded + NewLine;
s := s + MemoDirInfo + NewLine + NewLine;
Result := s
end;
Dušan Janošík | web: djanosik.cz, @djanosik
Nevypadá to špatně. Ještě zkusím předělat ten Win Installer, protože by se mi hodilo ověření licenčního klíče. Ale funguje to docela pěkně. Díky
ahoj,
česká verze inno setup je ke stažení na
http://www.innosetup.cz
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 4 hosté
Podobná vlákna
Instalator — založil kadakk
Inštalátor vo VB... — založil Laik
Instalátor — založil plasmo
Automatický inštalátor — založil Thomash
Instalator - Updator — založil VladislavK
Moderátoři diskuze