2015-10-16 63 views
-1

我已經在Visual Studio中編寫自定義操作的過程中在線閱讀了許多文章和博客,但執行此操作的方法並不完全清晰對我來說。我的安裝項目是用C++編寫的。任何人都可以請逐步指導如何去寫一個自定義的卸載程序在C++中。如何使用C++編寫自定義卸載程序代碼以刪除Visual Studio 2008中的用戶生成文件

我的設置項目創建下列文件結構:

設置

- >輸入 - > file.txt的

- >程序 - > PrimaryOutput(活動)

- >輸出

成功運行安裝程序時,會在輸出文件夾內創建文件,該文件夾在安裝過程中保持不變。如何在C++中編寫自定義卸載程序,以便在卸載後完全刪除所有文件。

編輯:我已經能夠創建自定義的動作模板是這樣的:

#include "stdafx.h" 

extern "C" UINT _stdcall Install(MSIHANDLE hInstall) 
{ 
    return ERROR_SUCCESS; 
} 

extern "C" UINT _stdcall Commit(MSIHANDLE hInstall) 
{ 
    return ERROR_SUCCESS; 
} 

extern "C" UINT _stdcall Rollback(MSIHANDLE hInstall) 
{ 
    return ERROR_SUCCESS; 
} 

extern "C" UINT _stdcall Uninstall(MSIHANDLE hInstall) 
{ 
    return ERROR_SUCCESS; 
} 

我應該如何着手編寫代碼的卸載方法刪除輸出文件夾。

+0

如果卸載程序只需要刪除一些目錄或文件,您可以使用一些系統調用。看看https://stackoverflow.com/questions/2256945/removing-a-non-empty-directory-programmatically-in-c-or-c – knightrider

+0

這通常是一個有問題的想法,因爲Windows是多用戶的。用戶生成的文件可能由多個不同的用戶擁有,其中沒有一個是執行卸載程序的管理員。對於由單個非管理員用戶安裝的應用程序(即,在「Program Files」之外)的思想_is_有效 – MSalters

回答

0

有這樣的: http://www.codeproject.com/Articles/570751/DevMSI-An-Example-Cplusplus-MSI-Wix-Deferred-Custo

和VS自定義操作都會被推遲,因此它會爲你工作。

或本:

http://www.codeproject.com/Articles/1747/MSI-Custom-Action-DLL

這就是你開始進不去。

如果您使用任何其他安裝工具,它會讓您訪問MSI的RemoveFile功能,因此不需要任何類型的自定義操作。

+0

感謝有用的鏈接@PhilDW。你可以看看我更新的問題。 – karizma

+0

您需要更加明確地說明「編寫代碼」。這是否意味着你不知道DeleteFile Win32 API?或FindFirstFile/FindNextFile?這是你需要的代碼。 – PhilDW

相關問題