2014-03-31 65 views
0

我創建了一個窗口應用程序,我需要創建setup.For創建安裝程序我使用NSIS。我寫了腳本來創建安裝文件,我需要將此安裝文件鏈接到添加/刪除程序。對於添加鏈接,添加/刪除我使用下面的代碼的程序:無法在添加/刪除程序中嵌入鏈接

WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\app" "DisplayName" "Name" 
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\app" "AppName" '"$INSTDIR\UninstallApp.exe"' 

此代碼成功添加在註冊表中的細節軟件\微軟\的Windows \ CurrentVersion \卸載\應用 但無法鏈接到添加/刪除。

+0

應用程序是不是一個很好的鍵名,使用GUID或更具體的東西... – Anders

回答

1

您是否嘗試過使用ADMIN權限的HKLM?即以管理權限啓動您的安裝程序。

代碼剪斷應該是這樣的

!include "MUI2.nsh" 

!define PRODUCT_NAME    "MyProduct" 
!define PRODUCT_UNINST_REGKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 
!define PRODUCT_DEF_LOC   "$PROGRAMFILES\${PRODUCT_NAME}" 
!define PRODUCT_UNINSTALLER  "MyUninstaller.exe" 

!insertmacro MUI_PAGE_DIRECTORY 
!insertmacro MUI_PAGE_INSTFILES 

!insertmacro MUI_UNPAGE_CONFIRM 
!insertmacro MUI_UNPAGE_INSTFILES 

!insertmacro MUI_LANGUAGE "English" 

Name   "${PRODUCT_NAME} Test" 
OutFile  "${PRODUCT_NAME}_Setup.exe" 
InstallDir "${PRODUCT_DEF_LOC}" 


Section "Core section" SecCore 

    SetOutPath $INSTDIR 

    WriteRegExpandStr HKLM "${PRODUCT_UNINST_REGKEY}" "UninstallString" "$INSTDIR\${PRODUCT_UNINSTALLER}" 
    WriteRegStr  HKLM "${PRODUCT_UNINST_REGKEY}" "DisplayName"  "Name" 

    WriteUninstaller "$INSTDIR\${PRODUCT_UNINSTALLER}" 

SectionEnd 



Section "Uninstall" 
    Delete "$INSTDIR\${PRODUCT_UNINSTALLER}" 
    RMDir $INSTDIR 
    DeleteRegKey HKLM "${PRODUCT_UNINST_REGKEY}" 
SectionEnd 
+0

感謝您的回覆。我嘗試了您建議的代碼,但沒有奏效。 –

+0

我已將我的初始評論更改爲完整的示例。經過測試並在我的系統上工作(win7 64位)。以管理員權限運行。 – khayk

+0

感謝您提供有用的信息。現在我遇到了另一個問題,那就是當我使用添加/刪除功能卸載應用程序時,註冊表內容沒有被刪除。 –

0

根據the official documentation,配置單元HKCU僅支持當前用戶的NT4/2000/XP。

嘗試使用HKLM來代替。

+0

感謝不HKLM工作仍在響應。其。 –

0

有兩個必需的卸載字符串條目,它們是DisplayNameUninstallString

URLInfoAbout這樣的其他條目是可選的,但必須有兩個必需條目才能顯示該條目。

+0

感謝您的評論。我根據您的建議更新了我的代碼,但仍然無法使用。 –