2013-07-01 79 views
-1

我試圖從一個URL下載一個.exe文件,並讓它去到我想要的文件夾,而不是下載文件夾。這是我到目前爲止的代碼:如何將url下載到給定的本地文件

Section "file" SEC07 
    SetOutPath "$INSTDIR" 
    SetOverwrite ifnewer 
    push "http://www.URL.com/file.exe" 
    call InternetExplorerAuto_OpenURL 
SectionEnd 

在這一點上,如果你想運行它,它會打開下載文件夾和askes。如何製作它,以便將.exe保存到我在桌面上製作的文件夾中?請幫忙!!

編輯:感謝您的幫助球員,但它不會爲我告訴它的文件中的exe的捷徑。它一直在製作一個名爲E的文檔。我是在做一些錯誤的事情,還是錯過了一行代碼。這是我的。

Section "CleanWDF" SEC09 
    SetOutPath "$INSTDIR\cleanWDF.exe" 
    SetOverwrite ifnewer 
    NSISdl::download_quiet "download.File.com/File.exe"; 
    CreateShortCut "$Desktop\NIS Edit\File.exe" "$INSTDIR\File.exe" 
SectionEnd 

編輯2

這裏是我想獲得工作的腳本。如果你能告訴我我哪裏出錯了。

; Script generated by the HM NIS Edit Script Wizard. 

; HM NIS Edit Wizard helper defines 
!define PRODUCT_NAME "Support tool" 
!define PRODUCT_VERSION "3.0" 
!define PRODUCT_PUBLISHER "Me" 
!define PRODUCT_WEB_SITE "https://www.mywebsite.com" 
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\AppPaths\C:\Users\sgould\Desktop\NIS Edit" 
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 
!define PRODUCT_UNINST_ROOT_KEY "HKLM" 

; MUI 1.67 compatible ------ 
!include "MUI2.nsh" 

; MUI Settings 
!define MUI_ABORTWARNING 
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" 
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" 


!insertmacro MUI_PAGE_COMPONENTS 
; Directory page 
!insertmacro MUI_PAGE_DIRECTORY 
; Instfiles page 
!insertmacro MUI_PAGE_INSTFILES 
; Finish page 
!define MUI_FINISHPAGE_RUN "$INSTDIR\C:\Users\"user"\Desktop\NIS Edit" 
!insertmacro MUI_PAGE_FINISH 

; Uninstaller pages 
!insertmacro MUI_UNPAGE_INSTFILES 

; Language files 
!insertmacro MUI_LANGUAGE "English" 

; MUI end ------ 


!define VARIANT_TRUE -1 ;((VARIANT_BOOL)-1) 
!define VT_ERROR 10 
!define DISP_E_PARAMNOTFOUND 0x80020004 
!define CLSCTX_LOCAL_SERVER 0x4 
!define CLSID_InternetExplorer {0002DF01-0000-0000-C000-000000000046} 
!define IID_IWebBrowserApp {0002DF05-0000-0000-C000-000000000046} 
!define IWebBrowserApp.Navigate ->11(i,i,i,i,i)i 
!define IWebBrowserApp.put_Visible ->41(&i2)i 

Function InternetExplorerAuto_OpenURL 
exch $2 
push $0 
push $1 
System::Call "ole32::CoCreateInstance(\ 
    g '${CLSID_InternetExplorer}', i 0, \ 
    i ${CLSCTX_LOCAL_SERVER}, \ 
    g '${IID_IWebBrowserApp}', *i 0 r0)" 

    System::Call "$0${IWebBrowserApp.put_Visible} (${VARIANT_TRUE}).r1" 

    System::Call "*(i ${VT_ERROR},i ${DISP_E_PARAMNOTFOUND},i)i.r1" ;VARIANT 
    System::Call 'Oleaut32::SysAllocString(w "$2")i.r2' 
    System::Call "$0${IWebBrowserApp.Navigate} ($2,$1,$1,$1,$1)" 
    System::Free $1 
    System::Call 'Oleaut32::SysFreeString(ir2)' 

System::Call "$0->2()" 

pop $1 
pop $0 
pop $2 
FunctionEnd 

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 
OutFile "supportTools.exe" 
InstallDir "C:\Users\"user"\Desktop\NIS Edit" 
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" 
ShowInstDetails show 
ShowUnInstDetails show 

Section "file" SEC03 
    SetOutPath "$INSTDIR" 
    SetOverwrite ifnewer 
    push "http:" 
    CreateShortCut "$Desktop\file.lnk" "$Desktop\NSI Edit\file.exe" 
    call InternetExplorerAuto_OpenURL 
SectionEnd 


Section -Post 
    WriteUninstaller "$INSTDIR\uninst.exe" 
    WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\C:\Users\sgould\Desktop\NIS Edit\NIS Edit" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\SupportTools.exe" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" 
SectionEnd 

; Section descriptions 
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 

!insertmacro MUI_FUNCTION_DESCRIPTION_END 


Function un.onUninstSuccess 
    HideWindow 
    MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." 
    FunctionEnd 

Function un.onInit 
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 
    Abort 
FunctionEnd 

Section Uninstall 
    Delete "$INSTDIR\${PRODUCT_NAME}.url" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file-2.30-bin.zip" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 
    Delete "$INSTDIR\file.exe" 

    Delete "$SMPROGRAMS\Support Tools\Uninstall.lnk" 
    Delete "$SMPROGRAMS\Support Tools\Website.lnk" 


    RMDir "$INSTDIR" 
    RMDir "" 

    DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" 
    DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" 
    SetAutoClose true 
SectionEnd 
+0

其實你並沒有下載任何東西,你只是要求網絡瀏覽器導航到文件的URL。就像它通過點擊鏈接所做的那樣,瀏覽器然後問你想用它做什麼。您應該考慮使用插件來下載Francisco建議的文件。 – Seki

+0

我確實嘗試過這個插件,但它仍然沒有按照我希望的方式工作。它不是把exe文件放在我想要的文件中,它將它們放在下載文件夾中 – WayzoftheKomodo

+0

'SetOutPath'用於設置你想放置某些文件的目錄,它不是單個文件的路徑 – Seki

回答

0

使用NSISdl Plugin

NSISdl::download "http://example.com/example.exe" "$Desktop\Your_Folder\example.exe"

+0

沒問題,我沒有在這一點上真正使用我的腳本插件。我是否需要撥打電話或!爲您剛給我的電話定義,或者我可以將電話放在需要的地方,並讓它正常工作?廣告你是正確的InternetExplorerAuto_openURL確實告訴它打開此頁面,但它也告訴它只在I.E而不是其他瀏覽器。 – WayzoftheKomodo

+0

謝謝你們的幫助,但它不會爲我告訴它的文件中的exe文件做一個快捷方式。它一直在製作一個名爲E的文檔。我是在做一些錯誤的事情,還是錯過了一行代碼。這是我的。 (Section「CleanWDF」SEC09 SetOutPath「$ INSTDIR \ cleanWDF.exe」 SetOverwrite ifnewer NSISdl :: download_quiet「http://download.File.com/File.exe」 CreateShortCut「$ Desktop \ NIS Edit \ File。 exe「」$ INSTDIR \ File.exe「 Section End – WayzoftheKomodo

+0

我不知道你在這裏試圖做什麼 我假設你想要在桌面上的文件夾中下載一個文件,然後在桌面上爲它創建一個快捷方式。如果多數民衆贊成, 首先,您需要指定文件夾的路徑,您要下載文件 'NSISdl :: download_quiet「download.File.com/File.exe」「$ Desktop \ Your_Folder \ File.exe」 CreateShortCut 「$ Desktop \ File.lnk」「$ Desktop \ Your_Folder \ File.exe」' – foobar

2

我不知道你打來的InternetExplorerAuto_OpenURL函數是什麼。我用NSISDL

NSISdl::download "http://www.URL.com/file.exe" "C:\temp\file.exe" 
+0

InternetExplorerAuto_OpenURL似乎是在[開源項目的安裝程序]中定義的(http://sourceforge.net/p/infact/svn/244/tree//InfactNSIS/trunk/infact_with_jre_install.nsi),並且只是告訴瀏覽器導航到給定的網址。 – Seki

0

有幾個問題:

  • SetOutPath是設置wher要放一些文件的目錄,它不單個文件的路徑。
  • 調用NSISdl::download_quiet語法

    NSISdl::download_quiet url_of_the_file_to_get name_of_the_local_file 
    
    你的情況

    ,像

    SetOutPath "$INSTDIR" 
    NSISdl::download_quiet "download.File.com/File.exe" "$INSTDIR\File.exe" 
    
    在您發佈的代碼

    ,你似乎只有網址部分

  • 的對於快捷方式的擴展名是.lnk而不是.exe因此對CreateShortcut的呼叫應該是

    CreateShortCut "$Desktop\NIS Edit\File.lnk" "$INSTDIR\File.exe" 
    

    在桌面的子目錄中創建快捷方式似乎很奇怪。或者,也許你想在$PROGRAMFILES目錄中創建一個快捷方式,其用途是將其放入子目錄中?

+0

關,如果你想我可以爲你提供整個劇本的副本。我想要做的是製作一個實用程序,它將從7個URL下載7個.exe文件。讓他們保存在沒有提示的計算機上,以便有人可以進入文件並運行他們想要的文件。我不確定我做錯了什麼,但它不適合我。 – WayzoftheKomodo

+0

如果您的代碼未被分類並且仍然無法使用,請將更新後的版本放在您的問題中,以幫助任何可能會出現的SO閱讀器。如果可能的話,將腳本簡化爲最小工作腳本,通過僅保留1個部分/下載來說明問題。 – Seki

+0

我把它添加到我問先生的第一個問題上 – WayzoftheKomodo

相關問題