Chci se zeptat na vaše zkušenosti se spouštění windows forms applications na jiných počítačích. Nikde jsem nečetl, že by program sestavený ve VC++ 2005 (samozřejmě s PSDK a .NET 2.0) neběžel na jiném počítači. Program se nestačí ani inicializovat (končí na prvním zavolání nastavení Application::XXX). To musím kvůli programu o velikosti 500kB instalovat 500MB SDK nebo celé .NET 2.0??? Pokud by mi někdo mohl poradit, kdyby náhodou existovalo nastavení kompilátoru nebo linkeru, byl bych vděčný. Našel jsem na MSDN /clr: s nějakým parametrem, který ale v Project properties nenastavím. Pak jsem ještě našel nastavení pro VC#, které u VC++ neexistuje. Upřesním, že mám VC++ Express Edition. Jinak aplikace se ve VC++ dělá fakt pěkně, v podstatě ani pro mě, mírně pokročilého začátečníka :P, to nebyl takový problém. Ale na tohle asi nepřijdu...
Díky
Fórum › C / C++
Spuštění programu z VC++ na jiném PC
Tak, jako na potvoru, jsem už něco našel:
There are basically two ways of redistributing VC++ libraries on another computer.
1) Deploying DLLs as private assemblies in application local folder.
2) Using Merge Modules and Setup Project to create an MSI and bootstrapper (setup.exe) that installs them as a shared side-by-side assemblies.
In VS2003 and earlier 1) means copying DLLs from System32 to applicaiton local folder on another computer. In VS2005 this is not going to work, you need to copy manifest and DLLs for this assembly from \vc\redist\x86. There is a sample on MSDN in Deployment application section that talks about this in details. Basically you need to do something like:
Create a folder on a Computer 1 exactly how you would like it to be on target Computer 2 or Computer 3.
In my example, I am going to create \bin and copy myapplication.exe there, then \bin\mylibrary and copy MyLibrary.dll there.
From "C:\Program Files\Microsoft Visual Studio 8\VC\Redist\x86" directory copy Microsoft.VC80.CRT and Microsoft.VC80.MFC under \bin and \bin\MyLibrary. For deploying 64bit apps to 64bit OS, use \vc\redist\amd64 or \vc\redist\ia64. For Debug, use dlls from \vc\nonRedist.
Copy \bin folder to a target computer (either Computer 2 or Computer 3)
On Computer 2, your application should run just fine
On Computer 3, Microsoft.VC80.CRT and Microsoft.VC80.MFC has to be on the path.
In both VS2003 and VS2005 (Express and non-express), 2) mean creating a new Setup Project, adding your files and add corresponding merge module. Something like this
Create Setup and Deployment Project
File->New Project -> Other Project Types -> Setup and Deployment -> Setup Project
Add EXE and DLL to the project and specify where they should be installed on the target computer
Project->Add->File
Find folder with MyApplication.exe and MyLibrary.DLL, select them both.
In File System window, right click on Application Folder and Create new folder called MyLibrary (because this is a part of my example. Don't do this if you don't want to).
Click on Application Folder again, select MyLibrary.DLL and drag it with mouse cursor to MyLibrary folder
In Solution Explorer, under your project in Detect Dependencies you should see that IDE detects dependencies on MFC80.dll and MSVCR80.dll. You need to add corresponding Merge Modules for these DLLs.
Project ->Add->Merge Module
In opened dialog select Microsoft_VC80_CRT_x86.msm and Microsoft_VC80_MFC_x86.msm. For debug these are Microsoft_VC80_DebugCRT_x86.msm and Microsoft_VC80_DebugMFC_x86.msm. For 64bit apps to 64bit OS, select MSM of the corresponding platform. For x64, Microsoft_VC80_CRT_x86_x64.msm and Microsoft_VC80_MFC_x86_x64.msm. For Itanium, Microsoft_VC80_CRT_x86_ia64.msm and Microsoft_VC80_MFC_x86_ia64.msm.
Build it (F7 or Build->Build Solution).
Now if you run setup.exe on another computer it will deploy your application and dependent DLLs.
the \vc\redist folder has been added after Beta 2, but Merge Modules can be found in Common Files\Merge Modules.
Thanks,
Nikola
VC++
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=54317&SiteId=1
Tak tenhle postup zas tak moc nefunguje. Pomůže stáhnout si redistribuci .NET příslušné verze a cílový počítač ji nainstalovat. Dále je nutné na cílovém počítači nainstalovat knihovny MSVC++ pomocí aplikace z VC\redist adresáře (nebývá obvyklou součástí, dá se stáhnout - hledejte na msdn "redistribution" nebo "deploy"
Další problémy se dají řešit podle http://forum.builder.cz/read.php?23,1892969
Daleko lépe to řeší placené verze Visual Studia - dokážou vytvořit instalátor, který všechny potřebné knihovny nainstaluje. Dokonce dokáže vynutit i instalaci chybějící verze .NET. Ale to nám, chudým studentům, zůstává zapřeno...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Spusteni na jinem PC? — založil
Problém při spuštění .exe na jiném stroji. — založil burcis
Spuštění programu — založil Kenvelo
Spusteni programu — založil Tom9k
Spuštění programu — založil Pavel.B
Moderátoři diskuze