簡體   English   中英

Windows服務的自定義操作安裝程序

[英]Custom Actions Installer for Windows Service

我有一個Windows服務,我使用msiexec.exe進行了靜默安裝,並且正在傳遞“設置服務登錄名”的用戶名和密碼

服務已成功安裝,但是啟動服務后,我收到“錯誤1069:由於登錄問題而導致服務未啟動”,我的登錄帳戶是管理員,並且已經測試了使用相同的msi文件手動安裝並啟動服務時的情況。它開始成功,我被困住了,需要一些關於我所缺少的東西的想法和指導。

這是我從安裝程序類重寫的方法。

 public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);

        var userName = Context.Parameters["USERNAME"];
        var password = Context.Parameters["PASSWORD"];
        if (!string.IsNullOrWhiteSpace(userName) && userName.ToLower() != "admin")
        {
            CustomInstallerParameters customParameters = new CustomInstallerParameters(Context);

            SaveCustomParametersInStateSaverDictionary(stateSaver, customParameters);
        }
        else
        {
            Context.Parameters.Remove("USERNAME");
            Context.Parameters.Remove("PASSWORD");
        }
    }

TIA。

最可能的是,不同的十年,同樣的問題。...(SeServiceLogonRight)

http://iswix.com/2008/09/22/different-year-same-problem/

FWIW,那時我還不是WiX的大用戶(當時我只是涉足),但是我的Matthew Rowan的評論中有一些真正的寶石。 他是正確的...如果您使用的是WiX,所有這些都將變得更加容易。

例如,您可以按照本教程進行操作:

https://github.com/iswix-llc/iswix-tutorials

這將創建一個以SYSTEM身份運行的Windows服務。 添加對WiXUtil擴展名和名稱空間的引用,並創建具有LogonAsService權限和所有設置的User元素。

FWIW,我對這一切的唯一擔心是,如果您不希望進行修復並破壞用戶名和密碼,則MSI需要屬性持久性。 屬性持久性非常容易記住(請參閱: http : //robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/ ),但問題是提供了足夠的加密而沒有暴露帳戶。

因此,我通常建議僅以NetworkService或SYSTEM身份運行並在域中授予計算機對象權限。 一種替代方法是讓安裝程序創建服務帳戶並在每次維修時隨機分配密碼,因此您不必保留該密碼。

似乎您正在使用Visual Studio安裝項目,並且很可能還使用了TextBoxes對話框之一來收集輸入。

您不能在命令行上靜默傳遞這些參數,因為Visual Studio會生成自定義操作來清除它們(我不知道為什么)。 在無提示安裝中,Windows僅運行InstallExecuteSequence,並且如果您使用(例如)Orca進行查看,您會看到清除值的自定義操作,例如“ CustomTextA_SetProperty_EDIT1”。 為了說明清楚,當前獲得的值將為空白,您可以通過將值記錄在某處來驗證這一點。

因此,使其生效的起點是使用Orca刪除InstallExecuteSequence表中的那些自定義操作調用。

此后,存在一個潛在的問題,因為這些值不受保護,因此這些值無法用於您的自定義操作,因此您需要在“屬性”表中將這些屬性名稱添加到以分號分隔的SecureCustomProperties列表中( EDIT1; EDIT2等)。

Visual Studio安裝項目不能很好地解決這些問題,而WiX之類的項目會更好,因為不需要任何代碼即可安裝,啟動或停止服務或使用帳戶配置它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM