Instalátor – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Instalátor – .NET – Fórum – Programujte.comInstalátor – .NET – Fórum – Programujte.com

 

Matěj Pácha0
Super člen
4. 3. 2007   #1
-
0
-

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).

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
DeaLer+2
Hero
4. 3. 2007   #2
-
0
-

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;

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
Matěj Pácha0
Super člen
4. 3. 2007   #3
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
29. 1. 2008   #4
-
0
-

ahoj,

česká verze inno setup je ke stažení na

http://www.innosetup.cz

Nahlásit jako SPAM
IP: 83.240.68.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Instalator — založil kadakk

Instalátor — založil plasmo

Instalator - Updator — založil VladislavK

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý